1灶挟、定義一個(gè)函數(shù),任意傳遞三個(gè)整數(shù)類型的值毒租,返回這三個(gè)值的和稚铣、差、平均值墅垮。
int demo(int v1, int v2, int v3, int *p1, int *p2);
int main(int argc, const char * argv[]) {
// 要求定義一個(gè)函數(shù), 傳遞三個(gè)值, 返回這三個(gè)值得和,差,平局值
int a = 10;
int b = 20;
int c = 30;
// int res = demo(a , b , c);
// printf("res = %i\n", res);
// 定義三個(gè)變量用于保存計(jì)算結(jié)果
int res1 = 0; // 和
int res2 = 0; // 差
// int res3 = 0; // 平局值
// *p1 == res1 *p2 == res2
// 我們想要的就是調(diào)用完函數(shù)之后, 和差平均值對(duì)應(yīng)的變量都被"修改"為對(duì)應(yīng)的值
int res3 = demo(a, b, c, &res1, &res2);
printf("和 = %i, 差 = %i, 平均值 = %i\n", res1, res2, res3);
return 0;
}
int demo(int v1, int v2, int v3, int *p1, int *p2)
{
int sum = v1 + v2 + v3;
*p1 = sum;
int m = v1 - v2 - v3;
*p2 = m;
int average = sum / 3;
return average;
/*
// 因?yàn)榉祷氐氖且粋€(gè)逗號(hào)表達(dá)式, 而逗號(hào)表達(dá)式的值是最后一個(gè)表達(dá)式的值, 所有返回的是average
// return sum, m, average;
*/
/*
// return 連個(gè)作用 1.返回值給調(diào)用者 2.結(jié)束函數(shù)
// 注意點(diǎn): return后面不可以寫任何語(yǔ)句, 因?yàn)閳?zhí)行不到
return sum;
printf("--------------\n");
return m;
return average;
*/
}
2惕医、 編寫一個(gè)函數(shù)char_contains(char str[],char key), 如果字符串str中包含字符key則返回?cái)?shù)值1算色,否則返回?cái)?shù)值0抬伺。
#include <stdio.h>
#include <math.h>
int char_contains(char str[], int length,char key);
int char_contains2(char str[],char key);
int main(int argc, const char * argv[]) {
// 編寫一個(gè)函數(shù)char_contains(char str[],char key), 如果字符串str中包含字符key則返回?cái)?shù)值1灾梦,否則返回?cái)?shù)值0
// 給你一個(gè)字符串和一個(gè)key, 要求從字符串中找出key, 如果找到就返回1沒(méi)有找到就返回0
char str[] = "xiaomage";
char key = 'z';
int length = sizeof(str) / sizeof(str[0]);
int res = char_contains(str, length, key);
// int res = char_contains2(str, key);
printf("res = %i\n", res);
return 0;
}
int char_contains2(char str[],char key)
{
/*
xiaomage a
x != a x != \0
i != a i != \0
a != a
xia z
x != z x != \0
i != z i != \0
a != z a != \0
\0 != z \0!=\0
*/
/*
// 1.定義一個(gè)變量記錄當(dāng)前的索引
// int index = 0;
// 2.遍歷數(shù)組, 取出當(dāng)前的字符判斷是否不等于key, 并且當(dāng)前出去的字符不是\0
while (str[index] != key && str[index] != '\0') {
index++;
}
*/
int index = -1;
while (str[++index] != key && str[index] != '\0');
// a != '\0'
// \0 != \0
// int res = str[index] != '\0' ? 1 : 0;
// return res;
return str[index] != '\0' ? 1 : 0;
}
int char_contains(char str[], int length,char key)
{
for (int i = 0; i < length; i++) {
if (str[i] == key) {
return 1;
}
}
return 0;
}
3峡钓、編程實(shí)現(xiàn)從鍵盤輸入3個(gè)0至9的數(shù)字,然后輸出0至9中哪些數(shù)字沒(méi)有出現(xiàn)過(guò)若河。
#include <stdio.h>
int main(int argc, const char * argv[]) {
// 從鍵盤輸入3個(gè)0~9的數(shù)字,然后輸出0~9中哪些數(shù)字沒(méi)有出現(xiàn)過(guò)
// 從鍵盤輸入100個(gè)0~2000的數(shù)字,然后輸出0~2000中哪些數(shù)字沒(méi)有出現(xiàn)過(guò)
/*
輸入: 1, 3 ,5
輸出: 0, 2, 4, , 6, 7, 8, 9
*/
/*
// 1.接收用戶輸入的數(shù)據(jù)
int num1, num2, num3;
printf("輸入三個(gè)整數(shù), 用逗號(hào)隔開(kāi)\n");
scanf("%i,%i,%i", &num1, &num2, &num3);
// 2.遍歷打印0~9
for (int i = 0; i <= 9; i++) {
// 3.判斷當(dāng)前打印的值是否是用戶輸入的值, 如果是就不打印
if (num1 != i &&
num2 != i &&
num3 != i) {
printf("%i\n", i);
}
}
*/
// 空間換時(shí)間
// 1.定義數(shù)組保存所有用戶輸入的數(shù)
int nums[10] = {0};
// 2.接收用戶輸入的數(shù)據(jù)
int value = -1;
for (int i = 0; i < 3; i++) {
printf("請(qǐng)輸入%i個(gè)整數(shù)\n", i+1);
scanf("%i", &value);
nums[value] = 1;
}
for (int i = 0; i < 10; i++) {
// printf("nums[%i] = %i\n", i , nums[i]);
if (nums[i] != 1) {
printf("%i\n", i);
}
}
return 0;
}
4能岩、已知一個(gè)無(wú)序的數(shù)組, 里面有5個(gè)元素, 要求寫一個(gè)函數(shù)對(duì)數(shù)組進(jìn)行排序 int nums[8] = {99, 12, 88, 34, 5, 44, 12, 100};
#include <stdio.h>
void selectSort(int nums[], int length);
void printArray(int nums[], int length);
//void swap(int v1, int v2);
void swap(int nums[], int i, int j);
void bubbleSort(int nums[], int length);
int main(int argc, const char * argv[])
{
// 已知一個(gè)無(wú)序的數(shù)組, 里面有5個(gè)元素, 要求對(duì)數(shù)組進(jìn)行排序
int nums[8] = {99, 12, 88, 34, 5, 44, 12, 100};
int length = sizeof(nums) / sizeof(nums[0]);
printArray(nums, length);
// selectSort(nums, length);
bubbleSort(nums, length);
printf("----------------\n");
printArray(nums, length);
return 0;
}
// 遍歷數(shù)組
void printArray(int nums[], int length)
{
for (int i = 0; i < length; i++) {
printf("nums[%i] = %i\n", i, nums[i]);
}
}
void bubbleSort(int nums[], int length)
{
for (int i = 0; i < length - 1; i++) {
for (int j = 0; j < length - 1 - i; j++) {
if (nums[j] > nums[j + 1]) {
swap(nums, j, j+1);
}
}
}
}
// 選擇排序
void selectSort(int nums[], int length)
{
for (int i = 0; i < length - 1; i++) {
for (int j = i+1; j < length; j++) {
if (nums[i] > nums[j]) {
/*
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
*/
// swap(nums[i], nums[j]);
swap(nums, i, j);
}
}
}
}
// 基本數(shù)據(jù)類型作為函數(shù)的參數(shù), 是值傳遞, 在函數(shù)中修改形參不會(huì)影響實(shí)參的值
/*
void swap(int v1, int v2)
{
int temp = v1;
v1 = v2;
v2 = temp;
}
*/
// 交換兩個(gè)數(shù)的值
void swap(int nums[], int i, int j)
{
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
5、 寫一個(gè)函數(shù)萧福,對(duì)傳遞任意兩個(gè)整型類型的數(shù)據(jù)進(jìn)行值的交換拉鹃。
6、 構(gòu)造一個(gè)函數(shù)鲫忍,任意輸入一個(gè)字符串毛俏,判斷字符串里面每個(gè)字符出現(xiàn)的次數(shù)。
#include <stdio.h>
#include <string.h>
int main(int argc, const char * argv[]) {
int count[128] = {0};
char string[200];
int i;
printf("請(qǐng)輸入一串字符串:");
//scanf("%s",string);
gets(string);//這個(gè)函數(shù)有安全隱患warning: this program uses //gets(), which is unsafe.
for (i = 0; string[i] != '\0'; i++) {
count[string[i]]++;
}
for (i = 0; i < 128; i++) {
if (count[i] != 0) {
printf("字符%c出現(xiàn)的次數(shù):%d\n",i,count[i]);
}
}
return 0;
}
7饲窿、求1+2!+3!+...+20!的和并返回輸出煌寇。
#include <stdio.h>
#include <string.h>
int main(int argc, const char * argv[]) {
float n,s=0,t=1;
for(n=1;n<=20;n++)
{
t*=n;
s+=t;
}
printf("1+2!+3!...+20!=%e\n",s);
return 0;
}
8、 編寫一個(gè)函數(shù)有5個(gè)人坐在一起逾雄,問(wèn)第五個(gè)人多少歲阀溶?他說(shuō)比第4個(gè)人大2歲腻脏。問(wèn)第4個(gè)人歲數(shù),他說(shuō)比第3個(gè)人大2歲银锻。問(wèn)第三個(gè)人永品,又說(shuō)比第2人大兩歲。問(wèn)第2個(gè)人击纬,說(shuō)比第一個(gè)人大兩歲鼎姐。最后問(wèn)第一個(gè)人,他說(shuō)是10歲更振。請(qǐng)問(wèn)第五個(gè)人多大炕桨?
#include <stdio.h>
#include <string.h>
int age(int n){
//逆向思維,遞歸函數(shù)
int c;
if(n==1) c=10;
else c=age(n-1)+2;
return c;
}
int main(int argc, const char * argv[]) {
printf("第五個(gè)人的年齡是:%d歲\n",age(5));
return 0;
}
9肯腕、 有n個(gè)人圍成一圈献宫,順序排號(hào)。從第一個(gè)人開(kāi)始報(bào)數(shù)(從1到3報(bào)數(shù))实撒,凡報(bào)到3的人退出圈子姊途,問(wèn)最后留下的是原來(lái)第幾號(hào)的那位。
#include <stdio.h>
#define nmax 50
int main(int argc, const char * argv[]) {
int i,k,m,n,num[nmax],*p;
printf("請(qǐng)輸入游戲共計(jì)多少成員:");
scanf("%d",&n);
p=num;
for(i=0;i<n;i++)
*(p+i)=i+1;
i=0;
k=0;
m=0;
while(m<n-1){
if(*(p+i)!=0) k++;
if(k==3){
*(p+i)=0;
k=0;
m++;
}
i++;
if(i==n) i=0;
}
while(*p==0) p++;
printf("最后剩下的是%d號(hào)位\n",*p);
return 0;
}
10知态、 寫一個(gè)函數(shù)捷兰,求一個(gè)字符串的長(zhǎng)度,在main函數(shù)中輸入字符串负敏,并輸出其長(zhǎng)度寂殉。(不準(zhǔn)使用系統(tǒng)的strlen函數(shù))。
#include <stdio.h>
int strLenth(char *p)
{
int n;
n=0;
while(*p!='\0')
{
n++;
p++;
}
return n;
}
int main(int argc, const char * argv[]) {
int len;
char str[20];
printf("請(qǐng)輸入字符串\n");
scanf("%s",str);
len=strLenth(str);
printf("你輸入的字符串長(zhǎng)度為 %d",len);
return 0;
}
11原在、 計(jì)算字符串中子串出現(xiàn)的次數(shù)。
#include <stdio.h>
int main(int argc, const char * argv[]) {
char str1[20],str2[20],*p1,*p2;
int sum=0;
printf("請(qǐng)輸入兩個(gè)字符串:");
scanf("%s%s",str1,str2);
p1=str1;p2=str2;
while(*p1!='\0')
{
if(*p1 == *p2){
while(*p1 == *p2 && *p2 != '\0'){
p1++;
p2++;
}
}
else
p1++;
if(*p2=='\0')
sum++;
p2=str2;
}
printf("s2在s1中一共出現(xiàn)了%d次",sum);
return 0;
}