精选C语言习题集及详细解答,助你轻松掌握编程技能

作者:广西淘贝游戏开发公司 阅读:93 次 发布时间:2023-06-18 22:53:05

摘要:C语言作为一种常见的编程语言,被广泛应用在软件开发、游戏开发、嵌入式系统等领域。作为一名C语言初学者,攻克一些练习题是非常必要的。本文将为大家介绍一份精选的C语言习题集及详细解答,帮助大家轻松掌握编程技能。一、习题集1. 输入一个100以内的正整数n,输出1到n之间所...

C语言作为一种常见的编程语言,被广泛应用在软件开发、游戏开发、嵌入式系统等领域。作为一名C语言初学者,攻克一些练习题是非常必要的。本文将为大家介绍一份精选的C语言习题集及详细解答,帮助大家轻松掌握编程技能。

精选C语言习题集及详细解答,助你轻松掌握编程技能

一、习题集

1. 输入一个100以内的正整数n,输出1到n之间所有能被3整除但不能被5整除的数。

2. 输入n个数,求其中最大的数和第二大的数的和。

3. 输入一个整数n,然后输入n个整数,统计其中正整数的个数和负整数的个数,输出正负整数的个数和所有整数的平均值。

4. 输入三个字符串,按照字典序从小到大输出。

5. 输入一个字符串,将其中的所有大写字母转换成小写字母。

6. 输入一个字符串,判断其中是否有重复的字符。

7. 输入两个整数a、b,输出它们的最小公倍数。

8. 输入一个字符串,将其中所有的数字字符删除。

9. 输入一个字符串,将其中的所有单词按照长度从小到大排序。

10. 设计一个计算器程序,可以进行加减乘除四则运算,支持多个连续运算符。

二、解答

1. 首先输入一个100以内的正整数n:

```

int n;

do {

printf("请输入一个100以内的正整数:");

scanf("%d", &n);

} while (n < 1 || n > 100);

```

然后使用循环语句逐个判断:

```

for (int i = 1; i <= n; i++) {

if (i % 3 == 0 && i % 5 != 0) {

printf("%d ", i);

}

}

```

2. 先输入n个数:

```

int n;

printf("请输入数字个数:");

scanf("%d", &n);

int a[n];

for (int i = 0; i < n; i++) {

printf("请输入第%d个数字:", i+1);

scanf("%d", &a[i]);

}

```

然后找出最大的数和第二大的数:

```

int max1 = a[0], max2 = a[0];

for (int i = 1; i < n; i++) {

if (a[i] > max1) {

max2 = max1;

max1 = a[i];

} else if (a[i] < max1 && a[i] > max2) {

max2 = a[i];

}

}

printf("最大的数是%d,第二大的数是%d,它们的和是%d\n", max1, max2, max1+max2);

```

3. 先输入n个数:

```

int n, x;

printf("请输入数字个数:");

scanf("%d", &n);

int positive_count = 0, negative_count = 0;

double sum = 0;

for (int i = 0; i < n; i++) {

printf("请输入第%d个数字:", i+1);

scanf("%d", &x);

if (x > 0) {

positive_count++;

} else if (x < 0) {

negative_count++;

}

sum += x;

}

printf("正整数的个数是%d,负整数的个数是%d,所有整数的平均值是%f\n", positive_count, negative_count, sum/n);

```

4. 直接使用strcmp函数:

```

char s[3][100];

for (int i = 0; i < 3; i++) {

printf("请输入第%d个字符串:", i+1);

scanf("%s", s[i]);

}

for (int i = 0; i < 2; i++) {

for (int j = i+1; j < 3; j++) {

if (strcmp(s[i], s[j]) > 0) {

char tmp[100];

strcpy(tmp, s[i]);

strcpy(s[i], s[j]);

strcpy(s[j], tmp);

}

}

}

for (int i = 0; i < 3; i++) {

printf("%s ", s[i]);

}

```

5. 直接遍历字符串并转换:

```

char s[100];

printf("请输入一个字符串:");

scanf("%s", s);

int len = strlen(s);

for (int i = 0; i < len; i++) {

if (s[i] >= 'A' && s[i] <= 'Z') {

s[i] += 'a' - 'A';

}

}

printf("%s\n", s);

```

6. 双重循环:

```

char s[100];

printf("请输入一个字符串:");

scanf("%s", s);

int len = strlen(s);

for (int i = 0; i < len; i++) {

for (int j = i+1; j < len; j++) {

if (s[i] == s[j]) {

printf("字符串中有重复的字符\n");

return 0;

}

}

}

printf("字符串中没有重复的字符\n");

```

7. 先输入a、b两个数,然后使用辗转相除法求最大公约数,再用a、b的积除以最大公约数即为最小公倍数:

```

int a, b;

printf("请输入两个整数:");

scanf("%d %d", &a, &b);

int x = a, y = b, r;

while (y > 0) {

r = x % y;

x = y;

y = r;

}

int lcm = a * b / x;

printf("两数的最小公倍数为%d\n", lcm);

```

8. 首先输入一个字符串,然后使用isdigit函数判断每个字符是否是数字,如果是就删除:

```

char s[100];

printf("请输入一个字符串:");

scanf("%s", s);

int len = strlen(s);

for (int i = 0; i < len; i++) {

if (isdigit(s[i])) {

for (int j = i; j < len-1; j++) {

s[j] = s[j+1];

}

len--;

i--;

}

}

printf("%s\n", s);

```

9. 先将字符串中所有单词提取出来,并存储它们的长度及在字符串中的起始位置,然后按照单词长度从小到大排序:

```

char s[100];

printf("请输入一个字符串:");

scanf("%[^\n]", s);

// 提取单词

int word_count = 0, word_start[100], word_length[100];

int len = strlen(s);

for (int i = 0; i < len; i++) {

if (isalpha(s[i])) {

word_start[word_count] = i;

int j = i;

while (j < len && isalpha(s[j])) {

j++;

}

word_length[word_count] = j - i;

word_count++;

i = j-1;

}

}

// 按照单词长度从小到大排序

for (int i = 0; i < word_count-1; i++) {

for (int j = i+1; j < word_count; j++) {

if (word_length[i] > word_length[j]) {

int tmp = word_length[i];

word_length[i] = word_length[j];

word_length[j] = tmp;

tmp = word_start[i];

word_start[i] = word_start[j];

word_start[j] = tmp;

}

}

}

// 输出结果

for (int i = 0; i < word_count; i++) {

for (int j = word_start[i]; j < word_start[i]+word_length[i]; j++) {

printf("%c", s[j]);

}

printf(" ");

}

printf("\n");

```

10. 设计一个简单的计算器程序,使用一个循环不断接收用户输入,每次输入两个数和一个运算符,进行运算并输出结果,直到用户输入q退出程序:

```

while (1) {

double a, b;

char op;

printf("请输入一个表达式,支持加减乘除四则运算,q表示退出:");

scanf("%lf %c %lf", &a, &op, &b);

if (op == 'q') {

break;

}

switch (op) {

case '+': printf("%f\n", a+b); break;

case '-': printf("%f\n", a-b); break;

case '*': printf("%f\n", a*b); break;

case '/': printf("%f\n", a/b); break;

default: printf("不支持的操作符\n"); break;

}

}

```

以上就是一些常见的C语言习题及其详细解答,希望能够对大家学习C语言有所帮助。实际上,完成练习题仅仅是学习C语言的一小步,还需要多写代码、多思考、多实践才能真正掌握C语言的编程技能。

  • 原标题:精选C语言习题集及详细解答,助你轻松掌握编程技能

  • 本文链接:https://qipaikaifa1.com/tb/11861.html

  • 本文由广西淘贝游戏开发公司小编,整理排版发布,转载请注明出处。部分文章图片来源于网络,如有侵权,请与淘贝科技联系删除。
  • 微信二维码

    CTAPP999

    长按复制微信号,添加好友

    微信联系

    在线咨询

    点击这里给我发消息QQ客服专员


    点击这里给我发消息电话客服专员


    在线咨询

    免费通话


    24h咨询☎️:189-2934-0276


    🔺🔺 棋牌游戏开发24H咨询电话 🔺🔺

    免费通话
    返回顶部