资源描述
/*读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:
在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
*/
#include <stdio.h>
void shuchu(int x);
int main(){
char n;
int a,b,s=0;
scanf("%c",&n);
while(n!='\n')
{
s+=n-'0';
scanf("%c",&n);
}
shuchu(s);
return 0;
}
void shuchu(int x)
{
if(x<0)
{
printf("fu ");
x=-x;
}
int mask = 1;
int t = x;
while ( t>9 ) {
t /= 10;
mask *=10;
}
do {
int d = x / mask;
switch(d)
{
case 0: printf("ling");break;
case 1: printf("yi");break;
case 2: printf("er");break;
case 3: printf("san");break;
case 4: printf("si");break;
case 5: printf("wu");break;
case 6: printf("liu");break;
case 7: printf("qi");break;
case 8: printf("ba");break;
case 9: printf("jiu");break;
}
if(mask>9)printf(" ");
x %= mask;
mask /= 10;
} while ( mask > 0 );
return;
}
/*
给定区间[-231, 231]内的3个整数A、B和C,请判断A+B是否大于C。
输入格式:
输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。
输出格式:
对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出“Case #X: false”,其中X是测试用例的编号(从1开始)。
输入样例:
4
1 2 3
2 3 4
2147483647 0 2147483646
0 -2147483648 -2147483647
输出样例:
Case #1: false
Case #2: true
Case #3: true
Case #4: false
*/
#include<stdio.h>
int main()
{
int t,i=1;
double a,b,c;
scanf("%d",&t);
do
{
i++;
scanf("%lf %lf %lf",&a,&b,&c);
if((a+b)>c)
{
printf("Case #%d: true\n",i-1);
}
else
{
printf("Case #%d: false\n",i-1);
}
}while(i<=t);
return 0;
}
/*
给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。
输入格式:
输入在第1行中给出矩阵A的行数M和列数N(3<=M,N<=20);最后M行,每行给出A在该行的N个元素的值。数字间以空格分隔。
输出格式:
每行按照“元素值 行号 列号”的格式输出一个局部极大值,其中行、列编号从1开始。要求按照行号递增输出;若同行有超过1个局部极大值,则该行按列号递增输出。若没有局部极大值,则输出“None 总行数 总列数”。
输入样例1:
4 5
1 1 1 1 1
1 3 9 3 1
1 5 3 5 1
1 1 1 1 1
输出样例1:
9 2 3
5 3 2
5 3 4
输入样例2:
3 5
1 1 1 1 1
9 3 9 9 1
1 5 3 5 1
输出样例2:
None 3 5
*/
#include<stdio.h>
int main()
{
int m,n,i,j,flag=0;
int a[20][20];
scanf("%d %d",&m,&n);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=1;i<m-1;i++)
{
for(j=1;j<n-1;j++)
{
if((a[i][j]>a[i+1][j])&&(a[i][j]>a[i-1][j])&&(a[i][j]>a[i][j+1])&&(a[i][j]>a[i][j-1]))
{
flag=1;
printf("%d %d %d\n", a[i][j], i + 1, j + 1);
}
}
}
if(!flag)
printf("None %d %d\n", m, n);
return 0;
}
/*
给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。
现给定数字,请编写程序输出能够组成的最小的数。
输入格式:
每个输入包含1个测试用例。每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。
输出格式:
在一行中输出能够组成的最小的数。
输入样例:
2 2 0 0 0 3 0 0 1 0
输出样例:
10015558
*/
#include<stdio.h>
int main()
{
int i,n,x,j;
int a[10];
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
/*输出第一个数*/
for(i=0;i<10;i++)
{
if(i!=0&&a[i]!=0)
{
printf("%d",i);
a[i]-=1;
break;
}
}
/*输出后面的数*/
for(i=0;i<10;i++)
{
while(a[i]!=0)
{
printf("%d",i);
a[i]--;
}
}
return 0;
}
/*
定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。
输出格式:每个测试用例的输出占一行,输出倒序后的句子。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
*/
#include<stdio.h>
#include<string.h>
int main()
{
char str[81];
char str2[80][81];
char *p;
int i,count=0;
gets(str);
p=strtok(str," ");
while(p!=NULL)
{
strcpy(str2[count],p);
p=strtok(NULL," \n");
++count;
}
for(i = count - 1; i > 0; --i)
printf("%s ", str2[i]);
printf("%s\n", str2[0]);
return 0;
}
/*
输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。
输入格式:
输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。
输出格式:
在一行中输出逆序后的字符串。
输入样例:
Hello World!
输出样例:
!dlroW olleH
*/
#include<stdio.h>int main()
{
char a[80];
int i=0;
while(a[i-1]!='\n')
{
scanf("%c",&a[i]);
i++;
}
for(i=i-1;i>=0;i--)
{
if(a[i]=='\n')
continue;
printf("%c",a[i]);
}
return 0;
}
/*
令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。
输入格式:
输入在一行中给出M和N,其间以空格分隔。
输出格式:
输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。
输入样例:
5 27
输出样例:
11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103
*/
#include <stdio.h>
int main()
{
int x,j=1,s,m,n,count=0;
int a[10001];
scanf("%d %d",&m,&n);
for ( x=2; x<=10000; x++ ) {
int i;
int isPrime = 1; // x是素数
for ( i=2; i<x; i++ ) {
if ( x % i == 0 ) {
isPrime = 0;
break;
}
}
if ( isPrime == 1 ) {
a[j]=x;
j++;
}
}
for(s=m;s<=n;s++)
{
printf("%d",a[s]);
count++;
if(s!=n&&(count%10!=0))
printf(" ");
if(count%10==0)
{
printf("\n");
}
}
return 0;
}
/*输入一个字符串S,再输入一个字符c,要求在字符串S中查找字符c。如果找不到则输出“Not found”;若找到则输出字符串S中从c开始的所有字符。
输入格式:
输入在第1行中给出一个不超过80个字符长度的、以回车结束的非空字符串;在第2行中给出一个字符。
输出格式:
在一行中按照题目要求输出结果。
输入样例1:
It is a black box
b
输出样例1:
black box
输入样例2:
It is a black box
B
输出样例2:
Not found
提交代码*/
#include<stdio.h>
#include<string.h>
int main()
{
char str[81]=" ";
char ch;
char *p;
gets(str);
scanf("%c",&ch);
p=strchr(str,ch);
if(p!=NULL)
{
printf("%s",p);
}
else
printf("Not found");
return 0;
}
/*输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。
输入格式:
输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。
输出格式:
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。
输入样例:
Tomcat is a male ccatat
cat
输出样例:
Tom is a male
提交代码*/
#include<stdio.h>
#include<string.h>
int main()
{
char str[81];
char ch[80];
char *p;
gets(str);
gets(ch);
while(strstr(str,ch))
{
p=strstr(str,ch); //把p指向str中的ch位置,得到ch开始的一串字符
p[0]='\0'; //把第一个字符单词改为'\0'
strcat(str,p+strlen(ch)); //把去掉ch长度后的单词前移
}
printf("%s",str);
return 0;
}
/*输入一个字符串和一个非负整数N,要求将字符串循环左移N次。
输入格式:
输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数N。
输出格式:
在一行中输出循环左移N次后的字符串。
输入样例:
Hello World!
2
输出样例:
llo World!He
提交代码*/
#include<stdio.h>
#include<string.h>
int main()
{
int n,m;
char str1[100];
char str2[100];
gets(str1);
scanf("%d",&n);
char *p=str1;
p=p+n;
for(m=0;m<n;m++)
{
str2[m]=str1[m];
}
p=strcat(p,str2);
printf("%s",*p);
return 0;
}
展开阅读全文