搜索
查看: 1442|回复: 8
打印 上一主题 下一主题

求大神帮忙解答简单的编程

[复制链接]
跳转到指定楼层
楼主
发表于 2014-4-16 15:54:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
1.输入10个整数存入一组维数,找出最小的数,然后把它和数组中最前面的元素交换位置再输出。
2.将输入的字符串中所有下标为偶数位置上的字母转化为大写字母后输出。
3.输入两个字符串(小于40字节),将它们连接后输出(不许用系统函数)。
4.将100以内的所有素数存入一维数组中并输出
5.输入一个字符串,将字符串中所有数字字符(0~9)转化为一个整数(去掉其他字符)并输出。(例如,输入2y3yu2i,输出232)
沙发
发表于 2014-4-16 15:54:55 | 只看该作者
1
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.     int i, x, min_pos, min;
  6.     int arr[10];
  7.    
  8.     scanf("%d", &x);
  9.     arr[0] = x;
  10.     min_pos = 0;
  11.     min = x;
  12.    
  13.     for(i=1; i<10; ++i){
  14.         scanf("%d", arr+i);
  15.         if(arr[i] < min){
  16.                         min = arr[i];
  17.             min_pos = i;
  18.         }
  19.     }
  20.    
  21.     if(min_pos != 0){
  22.         arr[min_pos] = arr[0];
  23.         arr[0] = min;
  24.     }
  25.    
  26.     /* 输出整个数组还是最小值? */
  27.     for(i=0; i<10; ++i)
  28.        printf("%d ", arr[i]);   
  29.    
  30.         system("pause");
  31.         return 0;
  32. }
复制代码
板凳
发表于 2014-4-16 16:09:12 | 只看该作者
2. 题目表述又有问题,是只输出下标为偶数的字符还是整个字符串?
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <stdlib.h>
  4. int main()
  5. {
  6.     char buf[10];
  7.     while(scanf("%9s", buf) == 1){
  8.         int i;
  9.         for(i=0; buf[i]; ++i)
  10.              if(i % 2 == 0)
  11.                    putchar(toupper(buf[i]));
  12.             else
  13.                   putchar(buf[i]);
  14.     }
  15.         system("pause");
  16.         return 0;
  17. }
复制代码
地板
 楼主| 发表于 2014-4-16 16:12:26 | 只看该作者

谢谢大神!每次总是想不到或者就是各种错误,唉
5#
发表于 2014-4-16 16:13:58 | 只看该作者
本帖最后由 rosynirvana 于 2014-4-16 16:15 编辑

3. 连接后输出又是什么?放进一个数组里?还是只要结果?
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.     char str_a[90], str_b[45];
  6.     int m = 0, n = 0;
  7.     scanf("%s", str_a);
  8.     scanf("%s", str_b);
  9.     while(str_a[m])
  10.           ++m;
  11.     while(str_b[n])
  12.           str_a[m++] = str_b[n++];
  13.     str_a[m] = '\0';
  14.     puts(str_a);
  15.     system("pause");
  16.     return 0;
  17. }
复制代码
6#
发表于 2014-4-16 16:21:11 | 只看该作者
4
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.     int primes[] = {2, 3, 5, 7};
  6.     char buf[101] = {0};
  7.     int i, j;
  8.     for(i=0; i<4; ++i)
  9.       for(j=primes[i]; j<101; j+=primes[i])
  10.         buf[j] = 1;
  11.     for(i=0; i<4; ++i)
  12.       printf("%d ", primes[i]);
  13.     for(i=10; i<101; ++i)
  14.       if(buf[i] == 0)
  15.     printf("%d ", i);
  16.     system("pause");
  17.     return 0;
  18. }
复制代码
7#
发表于 2014-4-16 16:24:05 | 只看该作者
5
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4. int main()
  5. {
  6.     char buf[50];
  7.     while(scanf("%49s", buf) == 1){
  8.       int i;
  9.       for(i=0; buf[i]; ++i)
  10.         if(isdigit(buf[i]))
  11.           putchar(buf[i]);
  12.     }
  13.     system("pause");
  14.     return 0;
  15. }
复制代码
8#
发表于 2014-4-16 16:31:59 | 只看该作者
可能有两点需要解说

1.
char buf[50];
while(scanf("%49s", buf) == 1){ /* code here */ }
是用来处理很长的输入的
每次读取49个字符,然后进行处理

2. 如果一个100以内的数字是合数,那么它必然有一个小于等于10的约数,所以就一定有一个小于等于10的质因数
于是只要用10以内的4个质数(一般人都能背下来)在100内做一次循环,然后把所有倍数去掉就行了
9#
 楼主| 发表于 2014-4-16 16:40:32 | 只看该作者
rosynirvana 发表于 2014-4-16 16:31
可能有两点需要解说

1.

刚刚才开始学c语言,这个还真不知道= =、   谢谢大神指点
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表