C语言100题(模板专用)
考研初试C语言复习 2021.9.27(补)
26~30题
前言
。
提示:以下是本篇文章正文内容,下面案例可供参考
第一题、
1.题目描述
一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
2.代码
#include <stdio.h>
int main() {
long n,a, b, c, d;
scanf_s("%d", &n);
a = n / 10000 % 10;
b = n%10000/1000;
c = n / 100 % 10;
d = n % 10;
if (a == d && b == c) {
printf("是回文数");
}
else printf("不是回文数");
return 0;
}
题目思考:利用变量保持5个不同位置数
第二题、
1.题目描述
给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
2.代码
#include <stdio.h>
int main() {
long num, a, b, c, d, zhong;
scanf_s("%ld", &num);
a = num / 10000;
b = num % 10000 / 1000;
zhong = num % 1000 / 100;
c = num % 100 / 10;
d = num % 10;
if (a != 0) {
printf("为 5 位数,逆序为: %ld %ld %ld %ld %ld\n", d, c, zhong, b, a);
}
else if (b != 0) {
printf("为 4 位数,逆序为: %ld %ld %ld %ld\n", d, zhong, c, b);
}
else if (zhong != 0) {
printf("为 3 位数,逆序为:%ld %ld %ld\n", d, c, zhong);
}
else if (c != 0) {
printf("为 2 位数,逆序为: %ld %ld\n", d, c);
}
else if (d != 0) {
printf("为 1 位数,逆序为:%ld\n", d);
}
return 0;
}
题目思考:同上,利用变量保持5个不同位置数
第三题、
1.题目描述
请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
2.代码
#include<stdio.h>
int main()
{
char i,j;
printf("请输入第一个字母:\n");
scanf("%c",&i);
getchar();//scanf("%c",&j);的问题,第二次是读入的一个换行符,而不是输入的字符,因此需要加一个getchar() 吃掉换行符
switch(i)
{
case 'm':
printf("monday\n");
break;
case 'w':
printf("wednesday\n");
break;
case 'f':
printf("friday\n");
break;
case 't':
printf("请输入下一个字母\n");
scanf("%c",&j);
if (j=='u') {printf("tuesday\n");break;}
if (j=='h') {printf("thursday\n");break;}
case 's':
printf("请输入下一个字母\n");
scanf("%c",&j);
if (j=='a') {printf("saturday\n");break;}
if (j=='u') {printf("sunday\n"); break;}
default :
printf("error\n"); break;
}
return 0;
}
题目思考:直接cv的,对7个单词找找规律
第四题、
1.题目描述
判断一个数是不是质数 (<=10000)
2.代码
#include <stdio.h>
#include <math.h>
#define N 10050
long prime[N];
int dontprime(int num) {//判断是不是质数 是就返回1 不是就返回0
if (num <= 1) return 0;
for (int i = 2; i < num; i++) {
if (num % i == 0) return 0;
return 1;
}
}
int isPrime(long n)
{
if (n <= 1)
return 0;
if (n == 2)
return 1;
if (n % 2 == 0)
return 0;
int limit = (int)sqrt((double)n);//用limit来缓存平方根
for (int i = 3; i <= limit; i = i + 2)
{
if (n % i == 0)
return 0;
}
return 1;
}
void sieve()
{
prime[0] = 0;
prime[1] = 0;
for (int i = 2; i < N; i++)
prime[i] = 1;
int limit = (int)sqrt((double)N);
for (int i = 2; i <= limit; i++)
{
if (prime[i])
for (int j = i * i; j <= N; j += i)
prime[j] = 0;
}
}
int isPrimeSieve(int n)
{
if (prime[n])
return 1;
else
return 0;
}
int main()
{
sieve();
long num;
scanf_s("%ld", &num);
if (isPrime(num) == 1) printf("质数");
else printf("不是质数");
return 0;
}
题目思考:质数的循环条件为什么只用到平方根就行:参考博客:https://blog.csdn.net/hello_word2/article/details/51940092
第五题、
1.题目描述
练习函数调用。
2.代码
#include <stdio.h>
void shuchu(void) {
printf("hello world!\n");
}
void threeshuchu(void) {
for (int i = 0; i < 3; i++) {
shuchu();
}
}
int main() {
threeshuchu();
return 0;
}
题目思考:
C语言,入门到放弃
第六题、
1.题目描述
反转字符串
2.代码
#include <stdio.h>
void fanzhuan(char* c) {
int length = 0;
char* p = c;
while (*p != 0) {
length++;
p++;
}
int i = 0;
char s;
while (i <= length / 2 - 1) {//2分&移动法
s = *(c + i);
*(c + i) = *(c + length - 1 - i);
*(c + length - 1 - i) = s;
i++;
}
}
int main() {
char s[] = "www.run.tangpin.com";
printf("%s\n", s);
fanzhuan(s);
printf("%s\n", s);
return 0;
}
总结
补前几天的