啊哈磊_编程从这里起步

标题: 求大神帮忙解答简单的编程 [打印本页]

作者: 我在梦见你    时间: 2014-4-16 15:54
标题: 求大神帮忙解答简单的编程
1.输入10个整数存入一组维数,找出最小的数,然后把它和数组中最前面的元素交换位置再输出。
2.将输入的字符串中所有下标为偶数位置上的字母转化为大写字母后输出。
3.输入两个字符串(小于40字节),将它们连接后输出(不许用系统函数)。
4.将100以内的所有素数存入一维数组中并输出
5.输入一个字符串,将字符串中所有数字字符(0~9)转化为一个整数(去掉其他字符)并输出。(例如,输入2y3yu2i,输出232)

作者: rosynirvana    时间: 2014-4-16 15:54
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. }
复制代码

作者: rosynirvana    时间: 2014-4-16 16:09
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
rosynirvana 发表于 2014-4-16 16:03
1

谢谢大神!每次总是想不到或者就是各种错误,唉
作者: rosynirvana    时间: 2014-4-16 16:13
本帖最后由 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. }
复制代码

作者: rosynirvana    时间: 2014-4-16 16:21
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. }
复制代码

作者: rosynirvana    时间: 2014-4-16 16:24
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. }
复制代码

作者: rosynirvana    时间: 2014-4-16 16:31
可能有两点需要解说

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

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

1.

刚刚才开始学c语言,这个还真不知道= =、   谢谢大神指点




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2