C语言练习题4

1、给一个不多于五位的正整数,要求:求出其位数,并分别打印出每一位数字,最后按逆序打印出这个正整数(如:输入123,打印出:321)。

#include
#include
int main()
{int num, i = 0, digit,sum=0;int str[10] = { 0 };printf("请输入一个不多于五位的正整数:\n");scanf("%d", &num);for (i = 0;; i++){str[i] = num % 10;if (num < 10)break;num /= 10;}digit = i + 1;printf("该正整数的位数是:%d\n", digit);for (i = digit - 1; i >= 0; i--)printf("%3d", str[i]);for (i = 0; i < digit; i++)sum += pow(10, digit-i-1) * str[i];printf("\n逆序输出该正整数:%d\n", sum);return 0;
}

2、求一个4行4列矩阵主对角线元素之和。

#include
#define MAX 4
int main()
{int i, j, sum = 0;int num[MAX][MAX] = { 0 };printf("请输入矩阵(行优先):\n");for (i = 0; i < MAX; i++)for (j = 0; j < MAX; j++)scanf("%d", &num[i][j]);for (i = 0; i < MAX; i++)sum += num[i][i];printf("这个矩阵的对角线之和为:%d\n", sum);return 0;
}

3、编写一个程序,判断从键盘输入的两个字符串是否相同,若相同则输出“字符串相同”,否则输出“字符串不同”。

#include
#define MAX 40int compare(char str_1[], char str_2[], int user_len)   //两字符串进行比较
{int i = 0;for (i = 0; str_1[i] != '\0' && str_2[i] != '\0' && i < user_len; i++){if (str_1[i] != str_2[i])break;}if (i < user_len) return 1;else return 0;
}int len(char user[])        //计算用户输入的字符串长度
{int i = 0;while (1){if (user[i] == '\0')return i;i++;}
}int main()
{int user_len = 0, ret;char str[MAX] = "hello world ";char user[MAX];printf("请输入一个字符串:\n");gets(user);user_len = len(user);ret = compare(str, user, user_len);if (!ret)printf("字符串相同!\n");elseprintf("字符串不同!\n");return 0;
}

4、输出100-200之间,能被3整除但不能被7整除的数。

#include
int main()
{int i;for (i = 100; i <= 200; i++){if (i % 3 == 0 && i % 7 != 0){printf("%d  ", i);}}
}

5、将一个月份数字转换为月份的英文名称。

#include
int main()
{int user=0;printf("请输入数字(1-12):\n");scanf("%d", &user);switch (user){case 1:printf("January\n");break;case 2:printf("February\n");break;case 3:printf("March\n");break;case 4:printf("April");break;case 5:printf("May");break;case 6:printf("June");break;case 7:printf("July");break;case 8:printf("August");break;case 9:printf("September");break;case 10:printf("October");break;case 11:printf("Movember");break;case 12:printf("December");break;default:printf("输入格式错误!\n");break;}return 0;
}
//手闲写了switch,其实可以用数组直接完成

6、编写一个程序,用简单选择排序实现对5个整数的排序(从大到小),排序的思路:首先从n个整数中选出值最大的整数,将他交换到第一个元素位置,再从剩余的n-1个整数中选出值最大的整数,将它交换到第二个元素的位置,重复上述操作,直到排序成功。

#include
#define MAX 5int main()
{int num[MAX] = { 0 };int i,j,index,temp;printf("请输入%d个数字:\n",MAX);      //找到了一种宏定义的新用法for (i = 0; i < MAX; i++)scanf("%d", &num[i]);for (i = 0; i < MAX - 1; i++){index = i;for (j = index+1; j < MAX; j++){if (num[index] < num[j])index = j;}if (index != i){temp = num[i];num[i] = num[index];num[index] = temp;}}for (i = 0; i < MAX; i++)printf("%d  ", num[i]);return 0;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部