c语言-经典常用-习题1.输入一个字符串,将其按给定的长度n格式化并输出,若n=0,则输出原字符串输入输入一个字符串输出格式化并输出样例输入asdfasdf3样例输出asdfasdf提示#include<stdio.h>#include<string.h>int main(){int n,m,i,j;char a[10000];gets(a);scanf("%d",&m);n=strlen(a);if(m==0)puts(a);else{for(i = 0; i < n; i += m){if(a[i] == '\0')return 0;for(j = 0; j < m; ++ j){if(a[i + j] == '\0'){printf("\n");return 0;}printf("%c", a[i + j]);}printf("\n");}}return 0;}2.题目描述输入一个长度不超过100 的字符串,删除串中的重复字符。
输入输入要检查的字符串,长度不超过100个字符。
例如:abacaeedabcdcd。
输出删除重复字符后的字符串。
例如:abced。
样例输入saas样例输出sa提示#include <stdio.h>int main(){char a[100];int i,j,m;scanf("%s",a);for(i=0;a[i]!=0;i++)for(j=i+1;a[j]!=0;j++)if(a[i]==a[j]){for(m=j;a[m]!=0;m++){a[m]=a[m+1];}j--;}puts(a);return 0;}3.请编写C程序,输入5个不同的且为字符格式的学生编号,将其先由大到小排序,再将最大的学生编号和最小的学生编号互换位置,然后输出此时5位学生的编号。
输入输入5位学生的编号(只含数字字符、英文字母或空格)。
输出输出按题意要求排序后的5位学生的编号。
样例输入good1tiger100horse2011mouse 02221century样例输出21centurymouse 022horse2011good1tiger100提示用gets()函数输入字符串。
#include<stdio.h>int main()char *temp,*p[5];char str[5][50];int i,j,c;for(i=0;i<5;i++) {gets(str[i]);p[i] = str[i];}for(i=0;i<5;i++) {for(j=4;j>=i+1;j--) {if((*p[j])>(*p[j-1])) {temp = p[j];p[j] = p[j-1];p[j-1] = temp;}}printf("%s\n",p[4]);for(i=1;i<4;i++){printf("%s\n",p[i]);}printf("%s\n",p[0]);}4.编程实现将字符串中最短的单词输出,在主函数中输入字符串,编写一个函数完成最短单词的查找,如果有多个相同长度单词,则只输出第一个最短单词。
假设单词之间用空格分隔(一个或多个空格),findshort(s1,s2)函数完成s1串是最短单词的查找,找到的最短单词存储于s2中。
输入一行字符串输出最短单词样例输入Happy new year样例输出new# include <stdio.h># include <string.h>int main(){int i,l;int min = 0, p, q;char str[10000];gets(str);for(i = 0; str[i] != '\0'; i ++){if(str[i] != ' '){q = i;l = 1;while(str[++ i] != ' ' && str[i] != '\0')++ l;if(min == 0 || min > l){min = l;p = q;}-- i;}}for(i = p; str[i] != ' ' && str[i] != '\0'; ++ i) printf("%c", str[i]);printf("\n");return 0;}5.输出任意的一个字符串内(字符串内可以包含空格)的所有整数。
输出时两整数间有四个空格。
输入输入一串字符输出输出所有的整数样例输入a00asd123e24样例输出0 123 24#include<stdio.h>int main(){int i;char a[100];gets(a);for(i=0;a[i];i++){if(a[i]>'0'&&a[i]<='9'){printf("%c", a[i]);while(a[++i]>='0'&&a[i]<='9')printf("%c",a[i]);printf(" ");}else if(a[i]=='0'){if(a[i+1]>='0'&&a[i+1]<='9')continue;else printf("0 ");}else continue;}printf("\n");return 0;}6.输入一字符串,对其按给定的条件进行排序,并输出。
排序条件为:将字符串从中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换。
如果字符串长度为奇数,则最中间的字符不参与处理。
例如,输入dcbahgfe,则输出hgfeabcd;若输入432198765,则输出876591234。
输入输入一个字符串。
输出输出按题中条件排序后的字符串。
样例输入432198765样例输出876591234# include <stdio.h># include <stdlib.h># include <string.h>int main(){char *p,*q,ch;p = new char[100];gets(p);int i,j;int n=strlen(p);q = new char[n];if(n%2==0){for(i=0;i<n/2-1;i++){for(j=i+1;j<n/2;j++){if(p[i]>p[j]){ch=p[i];p[i] = p[j];p[j]=ch;}}}for(i=0;i<n/2;i++){ch = p[i];p[i] = p[i+n/2];p[i+n/2] = ch;}}else{for(i=0;i<n/2-1;i++){for(j=i+1;j<n/2;j++){if(p[i]>p[j]){ch=p[i];p[i] = p[j];p[j]=ch;}}}for(i=0;i<n/2;i++){ch = p[i];p[i] = p[i+n/2+1];p[i+n/2+1] = ch;}}printf("%s\n",p);return 0;}7.激动人心的时刻到了!我们开发的记账软件即将在欧美地区发布,但我希望能把本土化工作做得更好。
所谓的本土化可不仅仅是把软件界面语言翻译成英语,还要根据当地的习俗来调整软件的使用方法。
比如我国在书写数字时,习惯根据“万位”用逗号将数字分隔,10001000 写成1000,1000;而欧美国家使用“千位”来分隔,10001000 会写成10,001,000。
现在,请你帮我写一个程序:将那些按“万位”来分隔的数字转换成按“千位”来分隔,让欧美的用户使用更加方便。
输入输入有多行,每一行包含一个以万位分隔的数字。
输出对应每组输入,输出以千位分隔的数字。
样例输入12,3456,78901000,1000样例输出1,234,567,89010,001,000# include <stdio.h># include <string.h>int main(){int i,a,b,j;char P[100];char q[100];while (scanf("%s",P)==1){a= strlen(P);b = 0;j = 0;for( i = a-1; i >= 0; i--){if(P[i] != ','){q[j++] = P[i];b += 1;if(b == 3){q[j++] = ',';b = 0;}}}if(j%4==0)j-=1;for(i = j-1; i >= 0; i--){printf("%c",q[i]);}printf("\n");}}8.绝对素数是指本身是素数,其逆序数也是素数的数。
例如:10321与12301是绝对素数。
编写一个程序,求出所有m~n(m≥11,n≤1000)之间的绝对素数。
程序要求实现两个自定义函数,prime(n)用于判断一个整数n是否是素数,是则返回1,否则返回0;inv(n)用于对整数n 进行逆序,函数返回逆序后的整数。
主函数通过调用上述两个自定义函数实现绝对素数的判断和输出。
输入m n输出m~n之间的绝对素数,每个输出整数占5位,每行输出10个样例输入11 1000样例输出11 13 17 31 37 71 73 79 97 101107 113 131 149 151 157 167 179 181 191199 311 313 337 347 353 359 373 383 389701 709 727 733 739 743 751 757 761 769787 797 907 919 929 937 941 953 967 971983 991提示#include<stdio.h> int prime(int x) {int i;for(i=2;i<x;i++) {if(x%i==0)return 0;}return 1;}int inv (int x) {int i,t,p=0;while(x>0){i=0;t=x%10;x=x/10;p=p*10+t;}return p;}int main(){int num,n,m,i=0;scanf("%d%d",&m,&n);for(num=m;num<=n;num++){if((prime(num))&&(prime(inv(num)))) {i++;if(i%10==0)printf("%5d\n",num);elseprintf("%5d",num);}}putchar ('\n');}9.某大奖赛有n(1<n<40)个选手参赛,m (2<m<20)个评委为依次参赛的选手评判打分:最高10分,最低0分。