第14周练兵区编程题
1. 学生成绩管理系统V5.0
2. 字符串中的字符排序
题目内容:
编写一个函数,对一个字符串中的字符进行升序排序,并输出字符排序后的字符串,字符串长度小于20。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int mycmp(const void* a,const void* b)
{
const char* x = (const char*)a;
const char* y = (const char*)b;
if(*x - *y == 0)
return 0;
else if(*x - *y > 0)
return 1;
else
return -1;
}
int main()
{
char str[20];
printf("Input a string:\n");
gets(str);
qsort(str,strlen(str),sizeof(char),mycmp);
puts(str);
return 0;
}
3. 纯数字字符串检验
题目内容:
按给定函数原型编程检查一个字符串是否全由数字组成。
int IsAllDigit(char p[]);/若全由数字组成,则函数返回1,否则返回0/
#include<stdio.h>
#include<ctype.h>
int IsAllDigit(char p[])
{
int flag = 1;
char *q = p;
while(*q != '\0')
{
if(!isdigit(*q))
flag = 0;
q++;
}
return flag;
}
int main()
{
char str[20];
printf("Please input a string:\n");
gets(str);
if(IsAllDigit(str))
printf("The string is digit string.");
else
printf("The string is not digit string.");
return 0;
}
4. 孪生素数
题目内容:
相差为2的两个素数称为孪生素数。例如,3与5,41与43等都是孪生素数。设计程序求出指定区间上的所有孪生素数对。区间上限和下限由键盘获取。
#include<stdio.h>
#include<math.h>
int Prime(long n)
{
int i ;
for(i = 2; i <= sqrt(n); i++)
{
if(n%i == 0)
return 0;
}
return 1;
}
int main()
{
long a, b;
int cnt = 0;
printf("please input c,d(c>2):\n");
scanf("%ld,%ld",&a, &b);
for(int i = a; i <= b; i++)
{
if(Prime(i) && Prime(i + 2) && (i + 2 <= b))
{
printf("(%ld,%ld)\n", i, i+2);
cnt++;
}
}
printf("total=%d\n",cnt);
return 0;
}
5. 求解不等式
题目内容:
对指定正实数n(采用双精度浮点型表示),试求满足下面平方根不等式的最小整数m,并输出不等式左边的值。程序中浮点数的数据类型均为double。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
double n, sum;
int i, m;
printf("Input n:\n");
scanf("%lf",&n);
for(m = 1; ; m++)
{
sum = 0;
for(i = 0; i <= m; i++)
{
sum += sqrt(m + i);
}
if(sum > n)
{
printf("Result:m>=%d\n",m);
printf("s=%.2f\n",sum);
return 0;
}
}
return 0;
}