例题#includestdio.h int main() { float add(float x,float y); float a,b,c; scanf(%f %f,a, b); cadd(a,b); printf(%.1f\n,c); } float add(float x,float y) { return xy; }#includestdio.h int main() { double power(float x,float y); float a,b; double c; scanf(%f %f,a, b); cpower(a,b); printf(%.1lf\n,c); } double power(float x,float y) { int i; double result1; for(i0;iy;i) { result*x; } return result; }第二题答案#includestdio.h int srqt(int a) { int z; int result0; for(z0;z*za;z) { resultz; } return result; } int main() { int x,y; printf(请输入一个数:\n); scanf(%d,x); printf(求平方根:\n); ysrqt(x); printf(算术平方根是%d:\n,y); }二分查找法解题#includestdio.h int mySqrt(int n) { int left0,rightn,ans0; while(leftright) { int mid(leftright)/2; if(mid*midn) { return mid; } else if(mid*midn) { ansmid; leftmid1; } else { rightmid-1; } } return ans; } int main() { int x; printf(请输入一个整数); scanf(%d,x); printf(算术平方根是:%d\n,mySqrt(x)); return 0; }3题答案#include stdio.h int main() { int num[10]{0}; int blank0,others0; char c; printf(请输入字符:\n); while((cgetchar())!\n) { if(c0c9) { num[c-0]; } else if(c ||c\t||c\n) { blank; } else { others; } } printf(\n统计结果: \n); for(int i0;i10;i) { printf(数字%d出现了%d次\n,i, num[i]); } printf(空白符出现了%d次\n,blank); printf(其他字符出现了%d次\n,others); return 0; }函数的嵌套调用#include stdio.h int squre(int x) { long z; zx*x; return z; } long factorial(int n) { int i; long result1; for(i1;in;i) { result*i; } return result; } int main() { long sum 0; int base; base 2; long square_2 squre(base); // 算 2*2 4 long fact_2 factorial(square_2); // 算 4! 24 sum fact_2; base 3; long square_3 squre(base); long fact_3 factorial(square_3); sum fact_3; printf(最终结果 s %ld\n, sum); return 0; }递归递归必须有一个退出条件#include stdio.h long resursion(int n); int main() { int n; long result; printf(input a integer number:\n); scanf(%d,n); resultresursion(n); printf(%d!%ld\n,n, result); } long resursion(int n) { long temp_result; if(n0) { printf(n 0,input error!\n); } else if(n0||n1) { temp_result1; } else { temp_resultresursion(n-1)*n; } return temp_result; }#include stdio.h int shu(int x) { int z; if(x0) { zx; } else { z0; } return z; } int main() { int i,result; int a[10]{1,2,3,4,-1,-2,-3,-4,2,3}; for(i0;i10;i) { resultshu(a[i]); printf(%d\n,result); } return 0; }#include stdio.h int test(int b[10]) { int i0; for(;i10;i) { printf(%d,b[i]); } } int main() { int a[10]{2,4,6,8,10,12,14,16,18,20}; test(a); putchar(\n); return 0; }#include stdio.h float test(int b[10]) { int j0,sum0; for(;j10;j) { sumb[j]; } return (float)sum/10.0; } int main() { int i; float result; int a[10]{0}; printf(输入十个学生的成绩:\n); for(i0;i10;i) { scanf(%d,a[i]); } resulttest(a); printf(平均成绩是%f\n,result); return 0; }局部变量和全局变量#include stdio.h float average(float a[]) { float aver0; int i; for(i0;i10;i) { avera[i]; } return aver/10.0; } float max(float b[]) { float mab[0]; int j; for(j1;j10;j) { if(b[j]ma) { mab[j]; } } return ma; } float min(float c[]) { float mic[0]; int k; for(k1;k10;k) { if(c[k]mi) { mic[k]; } } return mi; } int main() { float score[10]; printf(请输入十个学生成绩:\n); int i; for(i0;i10;i) { scanf(%f,score[i]); } float max1,min1,avera; averaaverage(score); max1max(score); min1min(score); printf(平均成绩为%f\n,avera); printf(最大成绩为%f\n,max1); printf(最小成绩为%f\n,min1); return 0; }变量的存储类别register变量#include stdio.h #include string.h extern void delete_char(char str[],char c); int main() { char c[100]; char c; printf(请输入字符串内容:\n); gets(str); printf() }指针#include stdio.h int main() { int a,b; int *pointer_1,*pointer_2; a100; b10; pointer_1a; pointer_2b; printf(%d,%d\n,a,b); printf(%d,%d\n,*pointer_1,*pointer_2); return 0; }答案如下#include stdio.h int main() { int *p1,*p2,*p,a,b; printf(请输入两个数:\n); scanf(%d %d,a, b); p1a; p2b; if(ab) { pp1; p1p2; p2p; } printf(%d %d,*p1,*p2); return 0; }#include stdio.h void swep(int *p1,int *p2) { int temp; temp*p1; *p1*p2; *p2temp; } int main() { int a,b,*pointer_1,*pointer_2; printf(请输入两个数:\n); scanf(%d %d,a, b); pointer_1a; pointer_2b; if(ab) { swep(pointer_1,pointer_2); } printf(交换后的值为:%d %d\n,*pointer_1,*pointer_2); return 0; }解法一#include stdio.h int main() { int a, b, c; int *pointer_1, *pointer_2, *pointer_3; printf(请输入三个数:\n); scanf(%d %d %d, a, b, c); // 找最大值 → 给 pointer_1 if (a b a c) pointer_1 a; else if (b a b c) pointer_1 b; else pointer_1 c; if (a b a c) pointer_3 a; else if (b a b c) pointer_3 b; else pointer_3 c; if ((a ! pointer_1) (a ! pointer_3)) pointer_2 a; else if ((b ! pointer_1) (b ! pointer_3)) pointer_2 b; else pointer_2 c; printf(从大到小%d %d %d\n, *pointer_1, *pointer_2, *pointer_3); return 0; }解法二#include stdio.h void swap(int *pt1,int *pt2) { int temp; temp*pt1; *pt1*pt2; *pt2temp; } void swep(int *q1,int *q2,int *q3) { if(*q1*q2) { swap(q1,q2); } if(*q1*q3) { swap(q1,q3); } if(*q2*q3) { swap(q2,q3); } } int main() { int a, b, c; int *pointer_1, *pointer_2, *pointer_3; printf(请输入三个数:\n); scanf(%d %d %d, a, b, c); pointer_1a; pointer_2b; pointer_3c; swep(pointer_1,pointer_2,pointer_3); printf(交换后的顺序是:%d %d %d\n,*pointer_1,*pointer_2,*pointer_3); return 0; }数组与指针方法一#include stdio.h int main() { int a[10]{9,8,7,6,5,4,3,2,1,0}; int i; for(i0;i10;i) { printf(%d\n,a[i]); } return 0; }方法二#include stdio.h int main() { int a[10]{9,8,7,6,5,4,3,2,1,0}; int i; for(i0;i10;i) { printf(%d\n,*(ai)); } return 0; }方法三#include stdio.h int main() { int a[10]{9,8,7,6,5,4,3,2,1,0}; int *p; for(pa;pa10;p) { printf(%d\n,*p); } return 0; }#include stdio.h void reverse(int x[],int n) { int temp,i,j,m; m(n-1)/2; for(i0;im;i) { jn-1-i; tempx[i]; x[i]x[j]; x[j]temp; } } int main() { int i,a[10]{3,7,9,11,0,6,7,5,4,2}; printf(原数组为:\n); for(i0;i10;i) { printf(%d,a[i]); } printf(\n); reverse(a,10); printf(交换后的数组:\n); for(i0;i10;i) { printf(%d,a[i]); } return 0; }#include stdio.h int main() { int i,a[10],max,min; printf(输入数组的值:\n); for(i0;i10;i) { scanf(%d,a[i]); } maxa[0]; mina[0]; for(i1;i10;i) { if(a[i]max) { maxa[i]; } if(a[i]min) { mina[i]; } } printf(max%d\n,max); printf(min%d\n,min); return 0; }第二种解法#include stdio.h int max,min; void max_min_value(int arr[],int n); int main() { int i,number[10]; printf(请输入十个数:\n); for(i0;i10;i) { scanf(%d,number[i]); } max_min_value(number,10); printf(max%d min%d,max,min); return 0; } void max_min_value(int array[],int n) { int *p,*array_end; array_endarrayn; maxmin*array; for(parray1;parray_end;p) { if(*pmax) { max*p; } else if(*pmin) { min*p; } } }归纳总结多维数组与指针#include stdio.h int main() { int a[3][4]{1,3,5,7,9,11,13,15,17,19,21,23}; int (*p)[4],i,j; pa; printf(i); scanf(%d,i); while(i2||i0) { printf(i); scanf(%d,i); } printf(j); scanf(%d,j); while(j3||j0) { printf(j); scanf(%d,j); } printf(a[%d,%d]%d\n,i,j,*(*(pi)j)); return 0; }#include stdio.h int main() { char string[]I Love guidian; printf(%s\n,string); return 0; }#include stdio.h int main() { char *stringI Love China; printf(%s\n,string); return 0; }#include stdio.h int main() { char a[]China is a good country!,b[40]; int i; for(i0;*(ai)!\0;i) { *(bi)*(ai); } *(bi)\0; printf(string a is:%s\n,a); printf(string b is:\n); for(int i0;b[i]!\0;i) { printf(%c,b[i]); } printf(\n\n); }#include stdio.h void copy(char c[],char d[]) { int i0; while(c[i]!\0) { d[i]c[i]; i; } d[i]\0; } int main() { char a[]China is a good country!; char b[100]I am a student!; printf(a%s\nb%s\n,a,b); copy(a,b); printf(a%s\nb%s\n,a,b); return 0; }#include stdio.h int max; int max_i(int x,int y) { maxx; if(xy) { maxy; } return max; } int main() { int (*p)(int,int); int a,b,c; pmax_i; scanf(%d %d,a, b); c(*p)(a,b); printf(a%d b%d max%d\n\n,a, b, c); return 0; }#include stdio.h int main() { double score[][4]{{60.0,70.0,80.5,90.5},{56.0,89.0,67.0,88.0},{34.2,55.0,87.0,98.0}}; double *search(double(*pointer)[4],int n); double *p; int i,m; printf(请输入学生的序号:\n); scanf(%d,m); printf(The scores of number %d are:\n,m); psearch(score,m); for(i0;i4;i) { printf(%5.2f\t,*(pi)); } printf(\n\n\n); } double *search(double (*pointer)[4],int n) { double *pt; pt*(pointern); return pt; }答案#include stdio.h /* 函数功能检查单个学生的4门课程是否有不及格 参数pointer 指向该学生4门成绩的行指针 返回值有不及格 → 返回该学生成绩的首地址全及格 → 返回NULL */ double *search(double (*pointer)[4]) { int i; // 遍历该学生的4门课程 for(i 0; i 4; i) { // 只要有1门成绩低于60判定为有不及格 if(*(*pointer i) 60.0) { return *pointer; // 返回该学生成绩的首地址 } } // 所有课程全及格返回NULL return NULL; } int main() { // 3个学生每个学生4门课程的成绩和你原代码一致 double score[][4] {{60.0,70.0,80.5,90.5}, {56.0,89.0,67.0,88.0}, {34.2,55.0,87.0,98.0}}; double *p; int i; // 自动计算学生总数代码更通用增减学生不用改逻辑 int student_total sizeof(score) / sizeof(score[0]); printf(有不及格课程的学生信息\n); printf(学号\t各科成绩\n); printf(------------------------------------\n); // 遍历所有学生筛选有不及格的 for(i 0; i student_total; i) { // 检查第i个学生是否有不及格 p search(score i); // p不为NULL → 该学生有不及格 if(p ! NULL) { // 输出学号从1开始符合日常习惯 printf(%d\t, i 1); // 输出该学生的4门成绩 for(int j 0; j 4; j) { printf(%5.2f , *(p j)); } printf(\n); } } return 0; }#include stdio.h #include string.h int main() { char *name[]{Fishc.com,www.Fishc.com,home.Fishc.com,Fishc.com/dz}; char **p; int i; for(i0;i4;i) { pnamei; printf(%s\n,*p); } }#include stdio.h int main() { int a[10]{0,1,2,3,4,5,6,7,8,9}; int *p1, *p2; ptrdiff_t count; // 指针相减的结果类型是 ptrdiff_t p1 a[0]; p2 a[9]; // 指针相减得到两个指针之间的元素个数 count p2 - p1; printf(p1 和 p2 之间的元素个数%lld\n, (long long)count); return 0; }预处理命令带参宏定义小结结构体和共用体#include stdio.h #include stdlib.h #include string.h #define num 3 struct person { int NUM; char name[20]; }; int main() { struct person man[num]; int i; for(i0;inum;i) { printf(请输入第 %d 个人的名字, i1); fgets(man[i].name, 20, stdin); man[i].name[strcspn(man[i].name, \n)] \0; printf(请输入所得票数); scanf(%d,man[i].NUM); getchar(); } printf(\n 投票结果 \n); for(i0;inum;i) { printf(姓名:%s\n所得票数:%d\n,man[i].name,man[i].NUM); } return 0; }