前言:

C语言的常见题,对大家学习C语言会有一定的帮助,不断地会收录新题(含牛客网的习题)

没有对题型进行分类,大家自行挑选对自己有用的题目

如果代码有什么bug,或者你比我有更好的处理方法还请及时下方留言

如果还需要哪种题型也可以下方留言

感谢支持!!!


eg1.(斐波那契数列)非递归的

方法1:

int main()
{int arr[30];//定义一个数组arr[0] = 0;//设置数组的第一个元素为0arr[1] = 1;//设置数组的第二个元素为1int i = 0;//定义一个循环变量for (i = 2; i < 30; i++){arr[i] = arr[i - 1] + arr[i - 2];//从第三个元素开始等于前两个元素的和 循环去赋值}for (i = 0; i < 30; i++){printf("%d\n", arr[i]);//循环把元素都打印出来}return 0;
}

方法2:递归求解

int fib(int n)
{if (n == 0)//第一个原素打印 0{return 0;}if (n <= 2 && n > 0)//第一个元素打印1{return 1;}else//从第三个元素开始递加{return fib(n - 1) + fib(n - 2);}}
int main()
{int i = 0;for (i = 0; i < 20; i++){int ret = fib(i);//打印斐波那契数列printf("%d\n", ret);}return 0;
}

效果如图:

方法3:(变式)求斐波那契数列的第n个元素

#pragma warning(disable : 4996)
#include <stdio.h>
int fib(int n)
{int result = 1;  int pre_result = 1;int next_preresult ;while (n > 2)  //从第三个数字才开始有规律 数值等于前两个相加{n = n - 1;next_preresult = pre_result;pre_result = result;result = pre_result + next_preresult;}return result;
}
int main()
{printf("请你输入想要查询的n的数值\n");int n = 0;scanf("%d", &n);//捕获你想查询的数字int ret = fib(n);//接收算出来的返回值(n所对应的斐波那契数列数值)printf("%d", ret);return 0;
}

效果如图:

eg2.字符金字塔(输入一个字符输出相应字符所对应的金字塔)

#include <stdio.h>
int main()
{char a;scanf("%c", &a);int i = 1;//行int j = 1;for (i = 1; i <= 5; i++)//从第一行开始  一共有5行{for (j = 5-i; j >=0; j--)//打印空格  空格从第一行到第五行空格是递减的  第一行四个空格第五行没有空格,所以利用循环 5-i表示打印的空格数去打印空格{printf(" ");}for (j = 1; j <= i; j++)//一行有几个字符取决于字符在第几行,在第几行打印打印几个字符{printf("%c ", a);}printf("\n");//循环完打印完一行换行}return 0;
}

效果如图:

(变式)打印菱形    (与上方的打印方法基本一致加一步打印倒三角)

//}
#include <stdio.h>
int main()
{char a;scanf("%c", &a);int i = 1;//行int j = 1;//打印上三角for (i = 1; i <= 5; i++)//从第一行开始  一共有5行{for (j = 5-i; j >=0; j--)//打印空格{printf(" ");}for (j = 1; j <= i; j++){printf("%c ", a);}printf("\n");}//打印倒三角for (i = 4; i>=1; i--)//从第一行开始  一共有5行{for (j = 5 - i; j >= 0; j--)//打印空格{printf(" ");}for (j = 1; j <= i; j++){printf("%c ", a);}printf("\n");}return 0;
}

效果如图:

(变式)根据自己需求打印多少行的菱形

#include <stdio.h>
int main()
{char a;int n = 0;scanf("%c %d", &a, &n);int i = 1;//行int j = 1;//打印上三角for (i = 1; i <= n; i++)//从第一行开始  一共有5行{for (j = n-i; j >=0; j--)//打印空格{printf(" ");}for (j = 1; j <= i; j++){printf("%c ", a);}printf("\n");}//打印倒三角for (i = n-1; i>=1; i--)//从第一行开始  一共有5行{for (j = n - i; j >= 0; j--)//打印空格{printf(" ");}for (j = 1; j <= i; j++){printf("%c ", a);}printf("\n");}return 0;
}

效果如图:

eg3. 反向输出一个四位数字(逆序输出)

#include <stdio.h>
int main()
{int n = 0;scanf("%d",&n);int q = n/1000;  //计算数字的每一位  千位int b = n%1000/100;//百位int s = n%100/10;//十位int g = n%10;//个位int new = g*1000+s*100+b*10+q*1;//倒着赋值回去printf("%04d",new);
}

效果如图:

eg4. (利用海伦公式)计算三角形的周长和面积

#include <stdio.h>
#include <math.h>
int main()
{int a = 0;//定义三个整形数据int b = 0;int c = 0;scanf("%d %d %d", &a, &b, &c);//录入数据if (a + b >= c && a - b <= c)//判断是否满足三角形的的前提条件{float zc = (float)(a + b + c);//将周长强制转换成浮点类型float S = 0;//定义一个浮点类型的面积Sfloat p = 0;//定义一个浮点型的半周长pp = (float)(zc / 2);//初始化pfloat n = (float)((p - a) * (p - b) * (p - c));//利用海伦公式float f = p * n;S = sqrt(f);printf("circumference=%.2f area=%.2f\n", zc, S);}}

效果如图:

海伦公式:相关海伦公式的介绍(点击即可查询)

eg 5.井字棋(简单版没有棋盘)(同往期博客的三子棋游戏)

#include <stdio.h>
char fun(char arr[3][3])
{int i = 0;for (i = 0; i < 3; i++)//竖着的三种情况(一列){if (arr[0][i] == arr[1][i] && arr[1][i] == arr[2][i])//利用循环对i进行变化去判断一列的元素是不是相等{return arr[0][i];//返回那个下标元素 }}for (i = 0; i < 3; i++)//横着的三种情况(一行){if (arr[i][0] == arr[i][1] && arr[i][1] == arr[i][2])//利用循环对i进行变化去判断一行的元素是不是相等{return arr[i][0];//返回那个下标元素 }}//判断主对角线上的三个元素if (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2])//利用主对角线所对应坐标去判断元素是否相等{return arr[0][0];//返回那个下标元素 }//判断副对角线上的三个元素if (arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0])//利用副对角线所对应坐标去判断元素是否相等{return arr[1][1];//返回那个下标元素 }else //都不是就返回一个平局{return 'Q';//Q代表平局}}
int main()
{char arr[3][3] = { 0 };//初始化棋盘int i = 0;int j = 0;for (i = 0; i < 3; i++)//循环对棋盘进行初始化{for (j = 0; j < 3; j++){scanf("%c", &arr[i][j]);//录入元素getchar();//清除换行}}char str = fun(arr);//调用判断输赢的fun函数if (str == 'K')//返回的K就是kiki赢{printf("KiKi wins!\n");}else if (str == 'B')//返回的B就是kiki赢{printf("BoBo wins!\n");}else {printf("No winner!\n");//上面两种情况 都不是就是都没赢}return 0;
}

效果如图:

1.主对角线情况

2.副对角线情况

3.一列的情况

4.一行的情况

5..都没赢的情况

eg 6.  相关质数的求法

#include <stdio.h>
int main()
{int i = 0;int j = 0;for (i = 2; i < 10; i++)//从2-10的数字(这里的10是可以改动的){for (j = 1; j < i; j++)//从1开始设置被除数小于数字本身即可{if (i % j == 0 && j != 1)//判断哪些数字不满足题目要求(判断一下除了自身和1还没有可以整除的数字  如果有进入if语句停止循环  所对应的数字不是质数){break;//有一个本身及1的被除数外即停止本次循环}}if (i == j)//这些数字都是循环完整一边后(j的数值不满足小于i)才跳出来的(这就证明这些数字都是只能被本身和1整除的  所以他们是质数){printf("%d ", i);//打印出来这些质数}}return 0;
}

效果如图:(10以内的质数)(10可以改变)

方法 2 :筛选法求质数(素数)(从2开始的后面的数组元素只要可以被2整除全部置成0,以此类推可以被3,4,5等等整除的数字全部置成0)(最终数组剩下的元素即为质数)

#include <stdio.h>
int main()
{int n = 0; //设置你想打印从数字2到数字几(n所对应的数值)int arr[100] = { 0 };//定义一个数组用来存放 数字 2~nwhile (scanf("%d", &n) != EOF)//输入n的数值{int i = 0;int j = 0;for (i = 2; i <= n; i++)//从2开始存进数组中{arr[j] = i;//以i为循环变量去把从2~n的数值赋值进数组里j++;}//对数组全部的元素进行访问  从2开始的后面的数组元素只要可以被2整除全部置成0,以此类推可以被3,4,5等等整除的数字全部置成0)(最终数组剩下的元素即为质数)for (i = 2; i <= n; i++){for (j = 0; j <= n - 2; j++){if (i != arr[j]){if (arr[j] % i == 0){arr[j] = 0;}}}}for (i = 0; i <= n; i++){if (arr[i] != 0)//数组元素中不是0的给他打印出来就是质数{printf("%d ", arr[i]);}}printf("\n");}return 0;
}

eg 7.计算球体的体积

#include <stdio.h>
#include <math.h>
#define pi 3.1415926  定义一个宏  是π的数值
int main()
{float r = 0;scanf("%f", &r);  //输入半径float mid = (float)4/(float) 3;//注意一定要对4/3的每个元素进行强制类型转化  因为3和4都是整型变量所以4/3的结果也是整型,所以需要强制转化  这样才可以输出 4/3的数值double V = mid * pow(r, 3) * pi;//球的体积公式printf("%.3lf", V);return 0;
}

eg 8. 2的n次方 (特殊方法)

不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算。

#include <stdio.h>
#include <math.h>
int main()
{int a = 0;while(scanf("%d", &a) != EOF) {//高效的实现可以使用左移,移动a位即为2的a次方printf("%d\n", 1 << a);}return 0;
}

方法 2 :一般方法直接利用C语言的库函数pow

#include <stdio.h>
#include <math.h>
int main()
{int n = 0;scanf("%d", &n);int ret = pow(2, n);printf("%d", ret);return 0;
}

eg 9 .变种水仙花数

#include <stdio.h>
int LilyNumber(int i)
{int flag = 0;//定义了一个判断变量int a = 0;int b = 0;int c = 0;int d = 0;a = i % 10000 * (i / 10000);//获取10000-100000数字的每一位b = i % 1000 * (i / 1000);c = i % 100 * (i / 100);d = i % 10 * (i / 10);if (a + b + c + d == i){flag = 1;//如果加在一起相等flag变成1  就是满足条件的数字}return flag;
}
int main()
{int i = 0;for (i = 10000; i < 100000; i++){int ret = LilyNumber(i);//循环调用函数去打印出数字if (ret == 1){printf("%d ", i);}}return 0;
}

eg 10.三角形判断

#pragma warning(disable : 4996)
#include <stdio.h>
int main()
{int a, b, c;while (scanf("%d %d %d", &a, &b, &c) != EOF){if (a + b > c && a - b < c)//满足三角形大条件{//再判断下面三类三角形if (a == b && b == c && c == a){printf("Equilateral triangle!\n");}else if (a == b || c == a || c == b){printf("Isosceles triangle!\n");}else if (a * a + b * b == c * c || c * c + b * b == a * a || a * a + c * c == b * b){printf("Right angle!\n");}else{printf("Ordinary triangle!\n");}}else//不满足三角形大条件{printf("Not a triangle!\n");}}return 0;
}

eg 11.简单计算器

#include <stdio.h>
int main()
{double a = 0.0;double b = 0.0;char c = 0;while(scanf("%lf%c%lf",&a,&c,&b)!=EOF)//输入两个数字和一个运算符 进去计算就好了{double sum = 0.0;if(c=='+'){sum = a+b;printf("%.4lf+%.4lf=%.4lf\n",a,b,sum);}else if(c=='-'){sum = a-b;printf("%.4lf-%.4lf=%.4lf\n",a,b,sum);}else if(c=='*'){sum = a*b;printf("%.4lf*%.4lf=%.4lf\n",a,b,sum);}else if(c=='/'){sum = a/b;if(b==0){printf("Wrong!Division by zero!\n");}else{printf("%.4lf/%.4lf=%.4lf\n",a,b,sum);}}else{printf("Invalid operation!\n");}}return 0;
}

eg 12.打印线图案

#include <stdio.h>
int main()
{int n = 0;while(scanf("%d",&n)!=EOF){int i = 0;for( i = 0 ; i < n ;i++)//循环按需求打印*个数{printf("*");}printf("\n");}return 0;
}

eg 13. 打印正方形

#include <stdio.h>
int main()
{int n = 0;while(scanf("%d",&n)!=EOF){int i = 0;int j = 0;for( i = 0 ;i < n ;i++ ){for( j = 0 ;j < n ;j++){printf("* ");}printf("\n");}}
}

eg 14.打印直角三角形

#include <stdio.h>
int main()
{int n = 0;while (scanf("%d",&n)!=EOF){int i = 0;int j = 0;for(i = 0;i < n;i++){for(j = 0 ;j <= i;j++ )//j<=i(*的个数小于等于行数就可以打印出来){printf("* ");}printf("\n");}}return 0;
}

 

eg 15.打印倒三角

#include "stdio.h"int main(){int x=0;int i,j,k;while(scanf("%d",&x)!=EOF)
{k=x;for(i=1;i<=x;i++){   for(j=1;j<=k;j++)//同打印正三角一样就是从多*向少*打印{printf("* ");}k--;//打印一行后减少下次打印*的个数printf("\n");}
}return 0;
}

eg 16.打印靠右的三角 

#include<stdio.h>
int main(){int n,i,j;while(~scanf("%d",&n)){for(i=0;i<n;i++){for(j=0;j<n;j++){if(j<n-i-1) printf("  ");else printf("* ");}printf("\n");}}
}

eg 16.打印金字塔(同上代码一致就是if条件句是打印1个空格,上面题目打印的是两个空格)

#include<stdio.h>
int main(){int n,i,j;while(~scanf("%d",&n)){for(i=0;i<n;i++){for(j=0;j<n;j++){if(j<n-i-1) printf(" ");else printf("* ");}printf("\n");}}
}

eg 17. 打印倒金字塔

#include <stdio.h>
int main()
{
int a = 0;
while (~scanf("%d", &a))
{
for (int b = 0; b < a; b++)
{
for (int c = 0; c < b; c++)
{
printf(" ");
}
for (int d = 0; d < a-b; d++)
{
printf("* ");
}printf("\n");
}
}return 0;
}

eg 18. 打印k形图案

#include <stdio.h>
int main()
{int n = 0;while (scanf("%d", &n) != EOF){int i = 0;int j = 0;for (i = 0; i <= n; i++)//打印上三角{for (j = n-i; j >= 0; j--)//*数量随着行数+而-1{printf("* ");}printf("\n");}for (i = 1; i <= n; i++)//打印下三角{for (j = 1; j <=i+1; j++)//每一行的*数量等于行数+1{printf("* ");}printf("\n");}}return 0;
}

eg 19. 打印箭头形图案

#include <stdio.h>
int main()
{int n = 0;while (scanf("%d", &n) != EOF){int i = 0;int j = 0;for (i = 0; i <= n; i++)//上半部分{for (j = 2 * n - (2 * i); j > 0; j--){printf(" ");}//打印空格for (j = 0; j <= i; j++){printf("*");}printf("\n");}for (i = 1; i <= n; i++){for (j = 1; j <= 2 * i; j++){printf(" ");}for (j = n - i + 1; j >= 1; j--){printf("*");}printf("\n");}}return 0;
}

eg 20. 打印反斜线

#include <stdio.h>
int main()
{int n = 0;while (scanf("%d", &n) != EOF){int i = 0;int j = 0;for (i = 0; i < n; i++)//打印行数{for (j = 0; j < i;j++){printf(" ");}printf("*");printf("\n");}}return 0;
}

eg 21. 正斜线(与反斜线基本一致)(就是打印空格的代码略有区别)

#include <stdio.h>
int main()
{int n = 0;while (scanf("%d", &n) != EOF){int i = 0;int j = 0;for (i = 0; i < n; i++)//打印行数{for (j = n-1-i; j >0; j--){printf(" ");}printf("*");printf("\n");}}return 0;
}

eg 22.打印X形

#include <stdio.h>
int main()
{int n = 0;while (scanf("%d", &n) != EOF){int i = 0;int j = 0;for (i = 0; i < n; i++){for (j = 0; j < n; j++){if (i == j || j == n - i - 1){printf("*");}else{printf(" ");}}printf("\n");}}return 0;
}

eg 22.空心正方形

#include <stdio.h>
int main()
{int n = 0;while ((scanf("%d", &n) != EOF)){int i = 0;for (i = 0; i < n; i++){int j = 0;for (j = 0; j < n; j++){if (i == 0 || i == n - 1 || j == 0 || j == n - 1)//把不满足条件的点扣掉{printf("* ");//满足要求的打印*}else{printf("  ");//其他不满足的点置成空格}}printf("\n");}}return 0;
}

 eg 23.空心三角形

#include <stdio.h>
int main()
{int n = 0;while (scanf("%d", &n) != EOF){int i = 0;int j = 0;for (i = 0; i < n; i++)//行数{for (j = 0; j < n; j++){if (i == j || j == 0 || i == (n - 1)){printf("* ");}else{printf("  ");}}printf("\n");}}return 0;
}

 eg 24.有序序列插入一个数

#include <stdio.h>
void sort(int arr[], int n)
{int i = 0;int j = 0;int temp = 0;for (j = 1; j <= n; j++){for (i = 0; i <= n - j; i++){if (arr[i] > arr[i + 1]){temp = arr[i];arr[i] = arr[i + 1];arr[i + 1] = temp;}}}
}
int main()
{int arr[50] = { 0 };int n = 0;scanf("%d", &n);int i = 0;for (i = 0; i < n; i++)//输入数组元素{scanf("%d", &arr[i]);}int cr = 0;scanf("%d", &cr);//输入想要插入的数组arr[n] = cr;//把想插入数组的元素赋值给数组sort(arr, n);//将插入好的数组进行冒泡排序for (i = 0; i <= n; i++)//打印出排序好的数组{printf("%d ", arr[i]);}
}

eg 25. 图片相似度

#include <stdio.h>
int main()
{int arr[10][10] = { 0 };int brr[10][10] = { 0 };int m = 0;int n = 0;int count = 0;scanf("%d %d", &m, &n);int i = 0;int j = 0;for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &arr[i][j]);//初始化数组}}for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &brr[i][j]);//初始化数组}}for (i = 0; i < m; i++){for (j = 0; j < n; j++){if (arr[i][j] != brr[i][j])//访问两个数组  如果元素不一样{count++;//计数器+1}}}int sum = n * m;//总元素int s = sum - count;//得到一样元素的数量float ret = (float)s / sum;//算出比例printf("%.2f", ret*100);return 0;
}

eg 26. 有序数组判断(升序or降序)

#include <stdio.h>
int main()
{int n = 0;int count1 = 0;int count2 = 0;int arr[50] = { 0 };int i = 0;scanf("%d", &n);for (i = 0; i < n; i++){scanf("%d", &arr[i]);//初始化数组}for (i = 1; i < n - 1; i++){if (arr[i] >= arr[i - 1] && arr[i + 1] >= arr[i])//判断数组元素的相邻元素是否满足升序或者是降序的标准{count1++;//满足升序计数器++}if (arr[i] <= arr[i - 1] && arr[i + 1] <= arr[i]){count2++;//满足降序计数器++}}if (count1 == (n - 2) || count2 == (n - 2))//判断如果计算器数量满足n-2即可因为是从第二个元素到倒数第二个元素   所以这里的n需要-2{printf("sorted\n");}else {printf("unsorted\n");}return 0;
}

eg 27.数组中删除指定元素

#include <stdio.h>
int main()
{int n = 0;int arr[50] = {0};int i = 0;scanf("%d",&n);for(i = 0;i < n; i++){scanf("%d",&arr[i]);初始化数组}int shan = 0;scanf("%d",&shan);//输入那个需要删除的数组for (i = 0;i < n;i++){if(arr[i]==shan)//去循环判断如果等于数组中的元素{arr[i] = 0;//将数组中的那个对应元素  赋值成0}}for (i = 0;i < n;i++){if(arr[i]!=0)//不打印0把其他的都打印出来{printf("%d ",arr[i]);}}return 0;
}

eg 28.数组去重

#include <stdio.h>
int main()
{int n = 0;int arr[1000] = { 0 };int i = 0;scanf("%d", &n);for (i = 0; i < n; i++){scanf("%d", &arr[i]);//初始化数组}int j = 0;for (i = 0; i < n; i++){for (j = 0; j < n; j++){if (i != j)//访问下标元素  在不是其本身的条件下去进行循环判断{if (arr[i] == arr[j])//如果有重合元素{arr[j] = 0;//把该元素赋值成0}}}}for (i = 0; i < n; i++)//打印出来{if (arr[i] != 0){printf("%d ", arr[i]);}}return 0;
}

eg 29.有序数组合并

#include <stdio.h>
int main()
{int n = 0;int m = 0;scanf("%d %d", &m, &n);int num = m;int arr[5000] = { 0 };//定义两个数组int brr[5000] = { 0 };int i = 0;int j = 0;for (i = 0; i < m; i++){scanf("%d", &arr[i]);//初始化这两个数组}for (j = 0; j < n; j++){scanf("%d", &brr[j]);}int crr[10000] = { 0 };//定义一个大的数组for (i = 0; i < m; i++){crr[i] = arr[i];//把arr数组的元素赋值给crr数组的前半段}for (i = 0; i < n; i++){crr[num] = brr[i];//把brr数组的元素赋值给crr数组的后半部num++;}for (j = 1; j < m + n; j++)//合并完保证是升序的  进行冒泡排序{for (i = 0; i < (m + n) - j; i++){if (crr[i] > crr[i + 1]){int temp = crr[i];crr[i] = crr[i + 1];crr[i + 1] = temp;}}}for (i = 0; i < m + n; i++)//最后打印出来{printf("%d ", crr[i]);}return 0;
}

eg 30. 上三角形矩阵判断

#include <stdio.h>
int main()
{int n = 0;scanf ("%d",&n);int i = 0;int j = 0;int arr[10][10] = {0};int count = 0;for (i = 0; i < n; i++){for (j = 0;j < n;j++){scanf("%d",&arr[i][j]);//初始化数组}}for (i = 0; i < n; i++){for (j = 0;j < n;j++){if (i !=j && j < n-1 && i != 0)//去访问这些下表的元素看看他们是不是都是0{if (arr[i][j] == 0){count++;//是0计数器+1}}}}if (count==n*(n-1)/2)//上三角矩阵的0的个数  等于阶数*(阶数-1)/2{printf("YES\n");}else{printf("NO\n");}return 0;
}

eg 31.矩阵转置 (通过交换循环变量就可以实现)

#include <stdio.h>
int main()
{int n = 0;//行int m = 0;//列scanf("%d %d", &n, &m);int arr[10][10] = { 0 };int i, j;for (j = 0; j < n; j++){for (i = 0; i < m; i++){scanf("%d", &arr[i][j]);}}for (j = 0; j < m; j++){for (i = 0; i < n; i++){printf("%d ", arr[j][i]);}printf("\n");}}

eg 32. 杨辉三角

#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);int i = 0;int j = 0;int arr[30][30] = { 0 };for (i = 0; i < n; i++){for (j = 0; j <= i; j++){if (j == 0)//第一列的元素全是1{arr[i][j] = 1;}else if (j == i)//对角线的元素都是1{arr[i][j] = 1;}else//其他的元素都等于上一行的元素+上一行左一列的元素和{arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];}}}for (i = 0; i < n; i++)//打印出来杨辉三角{for (j = 0; j <= i; j++){printf("%5d", arr[i][j]);}printf("\n");}return 0;
}

eg 33.矩阵交换

#include <stdio.h>
int arr[10][10];
void swapr(int m, int a, int b)
{int temp;for(int i = 0; i < m;i++)//交换对应下标元素{temp = arr[a][i];arr[a][i] = arr[b][i];arr[b][i] = temp;}
}
void swapc(int n,int a, int b)//交换对应下标元素
{int temp;scanf("%d%d",&a,&b);for(int i = 0; i < n;i++){temp = arr[i][a];arr[i][a] = arr[i][b];arr[i][b] = temp;}
}
int main()
{int n,m,k,a,b;char func;scanf("%d%d",&n,&m);for(int i = 0; i < n; i++){for(int j = 0; j < m; j++){scanf("%d",&arr[i][j]);//初始化数组}}scanf("%d",&k);//输入需要变化几次while(k){scanf(" %c%d%d",&func,&a,&b);if(func == 'r')//行变换{swapr(m,a-1,b-1);//调用函数}if(func == 'c')//列变化{swapc(n,a-1,b-1);//调用函数}k--;}for(int i = 0; i < n; i++){for(int j = 0; j < m; j++)//打印出来变化后的数组{printf("%d ",arr[i][j]);}printf("\n");}
}

eg 33.模拟实现计算器

#include <stdio.h>
//模拟实现计算器函数指针
int add(int x,int y)
{return x + y;
}
int sub(int x, int y)
{return x - y;
}
int cheng(int x, int y)
{return x * y;
}void calc(int (*pf)(int, int))
{int ret = pf(3, 5);printf("%d", ret);
}
int main()
{calc(add);printf("\n");calc(sub);printf("\n");calc(cheng);return 0;
}

C语言常见题目汇总(不断更新)(建议收藏)相关推荐

  1. QML中文手册(持续更新...建议收藏)

    最近学习QML,中间遇到了一些问题,难免要翻阅一些资料,当查看到官方文档时候,我的小脑袋,有点扛不住了,全是英文,所以这里我打算把我看到的,学习过程中接触到的文档都翻译成中文,有些是机翻,有些是人为. ...

  2. 一级建造师课件下载建筑工程行业会计分录汇总非常全建议收藏!

    一级建造师课件下载建筑工程行业会计分录汇总非常全建议收藏! 1.基本流程 凭证制单→凭证审核→记账→对账→其他系统结账→总账系统结账 2.工资.社保费.个人所得税的核算 根据每月末人力资源部和各项目部 ...

  3. 史上最全阿里Java面试题目大汇总!强烈建议收藏~

    阿里面试题目目录 技术一面(基础面试题目) 技术二面(技术深度.技术原理) 项目实战(项目模拟面试) JAVA开发技术常问的问题 阿里必会知识 阿里面试范畴 阿里面试总结 一:阿里技术一面(基础掌握牢 ...

  4. flex布局练习题,面试必备,持续更新建议收藏~

    先言:  现在网页布局大多都是flex布局,像浮动这些用得比较少,在面试中flex也是被经常问到的.而有些同学学完flex后,又不懂怎么练习巩固,所以,所以,所以,我汇聚了一些常见的flex的练习题案 ...

  5. c语言常见表达式汇总(赋值表达式,条件表达式,关系表达式,算数表达式......)

    以下是一些常见的C语言表达式: 赋值表达式:用等号(=)将一个值赋给一个变量,例如:x = 5 算术表达式(数值表达式):使用算术运算符(+.-.*./)来执行算术运算,例如:x + y 关系表达式: ...

  6. WinIDE 实用不常见 快捷键汇总(更新中)

    快捷键汇总 只收录一些实用好用但不常见的功能的快捷键. Windows 快捷键 快捷键 解释 Ctrl + ←/→ 跨单词移动 Ctrl + Shift + ←/→ 选中整个单词单词 Ctrl + b ...

  7. 数据工程师面试常见题目汇总

    1.为什么 UNION ALL 比 UNION 快? 答:因为在使用 UNION 的时候,需要删除重复的记录,但是使用 UNION ALL 的时候不用删除.所以如果在知道需要 UNION 的查询不可能 ...

  8. 查询出编号长度大于4的code_[LeetCode] 题目汇总(持续更新)

    持续更新 ..... 233. 168. Excel表列名称 167. 两数之和 II - 输入有序数组 166. 分数到小数 165. 比较版本号 164. 最大间距 162. 寻找峰值 160. ...

  9. ng6 常见错误汇总(持续更新)

    Expression has changed after it was checked. Previous value 产生这个错误的原因很复杂,三言两语说不清.这个错误只会在dev模式出现,在pro ...

  10. 26个类型的常见面试精选总结(建议收藏)

    最近技术交流群里面很多群友在最近面试完之后,有的还将面试题带出来了,都将面试题都发到群里一起讨论,还是比较火热的,都将答案讨论出来了,但是面试题都比较零散,所以博主将大家和博主自己搜集的面试题统一总结 ...

最新文章

  1. 牛逼哄洪的 Java 8 Stream,性能也牛逼么?
  2. 图片流量节省大杀器:基于CDN的sharpP自适应图片技术实践
  3. Go 支持Protocol Buffers的配置
  4. CCPC 2018桂林站游记
  5. 修改mysql数据库的编码格式
  6. 架构漫谈(八):从架构的角度看如何写好代码
  7. redis和memcached缓存
  8. linux安装mysql后怎么进去_linux安装mysql详细步骤
  9. 计算机一级资料书推荐,推荐版 全国计算机一级考试试题【史上最全面的资料,不看你就亏!】.doc...
  10. mysql blob字段存储_使用数据库Blob数据类型进行对象临时存储
  11. php输出0到100所有数,php-循环从1到100的数字,每10个数字将数字除以10
  12. Wide-Baseline Image Matching Using Line Signatures
  13. 跳转的两种方式(转发与重定向)
  14. 1.UiDevice API 详细介绍
  15. matlab计算惯性矩,动力总成主惯性矩计算及扭矩轴(TRA)位置确定
  16. 新品齐聚CES 各家首发预示2013智能机大屏四核走向(转)
  17. HTML-滚动字幕的源代码(可作滚动公告)
  18. 使用github免费搭建个人博客后的写作及上传说明
  19. mysql中文显示标题列_我在数据库中建立的列名为英文的,但标题是中文的,在编程界面中显示的是英文的列名,怎样设置成中文的?...
  20. SpringBoot resultful风格返回格式

热门文章

  1. 【元胞自动机】基于元胞自动机实现双车道靠右行驶交通流模型matlab代码
  2. 基于matlab的声波分析研究,基于MATLAB的声音信号分析与处理(共13页)
  3. 如何找到Google浏览器扩展程序在本地文件夹中的位置?
  4. 服务器中tomcat内存溢出配置文件修改
  5. 毕设题目:Matlab肌电信号
  6. 计算机竖式在线,竖式计算器
  7. 最大流 (Maximum Flow) 之 流网络和流
  8. AI对话机器人实现原理
  9. (云苍穹)表单插件常用代码
  10. 语音识别软件测试面试,软件测试之ASR(语音识别)评测学习