2025-03-06

This commit is contained in:
smallkun 2025-03-06 12:48:09 +08:00
parent 9229598107
commit 1f7190eff5
2 changed files with 657 additions and 0 deletions

View File

View File

@ -0,0 +1,657 @@
### C语言-1
```c
/*-------------------------------------------------------
任意输入一个日期,计算这一天是这一年中的第几天(考虑闰年和平年)。
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int y,m,d,s,f;
s=0;
printf("请输入一个日期YYYY-MM-DD");
scanf("%d-%d-%d",&y,&m,&d);
if(y%4==0&&y%100!=0||y%400==0)
f=1;
else
f=0;
switch(m-1)
{
/**********Program**********/
case 11: s+=30;
case 10: s+=31;
case 9: s+=30;
case 8: s+=31;
case 7: s+=31;
case 6: s+=30;
case 5: s+=31;
case 4: s+=30;
case 3: s+=31;
case 2: s+=f+28;
case 1: s+=31;
/********** End **********/
}
s=s+d ;
printf("%d-%d-%d是这一年中的第%d天\n",y,m,d,s);
}
```
### C语言-2
```c
/*-------------------------------------------------------
编程求s=a+aa+aaa+aaaa+aa…a的值。其中a为一个数字3+33+333+3333+33333要求a以及所加数字个数n由键盘输入,示例中a=3,n=5。使用for
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int a,n,s,i,t;
s=t=0;
printf("请输入数字a:");
scanf("%d",&a);
printf("请输入求和的项数n:");
scanf("%d",&n);
/**********Program**********/
t = a;
for(i=0;i<n;i++){
s += t;
t*=10;
t+=a;
}
/********** End **********/
printf("s=%d\n",s);
}
```
### C语言-3
```c
/*-------------------------------------------------------
从键盘输入一个十进制整数将其转换为二进制后反序再转成新的十进制后输出。11→1011→1101→13使用while循环
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int n,s,t;
s=0;
printf("请输入一个整数:");
scanf("%d",&n);
/**********Program**********/
//1011 从最末尾开始 依次除出
//加入s之前将前加入的数*1
while(n){
s += s + n%2;
n /= 2;
}
/********** End **********/
printf("%d\n",s);
}
```
### C语言-4
```c
/*-------------------------------------------------------
编程判断m是否素数,m由键盘输入。(使用for
-------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
main()
{
int m,i,k;
printf("请输入一个正整数 :");
scanf("%d",&m);
k=sqrt(m);
/**********Program**********/
for(i=2;i<=k;i++){
if(m % i == 0){
break;
}
}
/********** End **********/
if(i>k)
printf("%d是素数\n",m);
else
printf("%d不是素数\n",m);
}
```
### C语言-5
```c
/*-------------------------------------------------------
编程判断m是否素数,m由键盘输入。(使用for循环
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int m,i;
printf("请输入一个正整数 :");
scanf("%d",&m);
/**********Program**********/
for(i=2;i<m;i++){
if(m%i==0){
break;
}
}
/********** End **********/
if(i==m)
printf("%d是素数\n",m);
else
printf("%d不是素数\n",m);
}
```
### C语言-6
```c
/*-------------------------------------------------------
使用for循环输出99乘法表要求格式如图所示: (注:乘积占四个字符)
1x1=1
2x1=2 2x2=4
3x1=3 3x2=6 3x3=9
4x1=4 4x2=8 4x3=12 4x4=16
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,j;
/**********Program**********/
for(i=1;i<10;i++){
for(j=1;j<=i;j++){
printf("%dx%d=%-4d", i, j, i*j);
}
printf("\n");
}
/********** End **********/
}
```
### C语言-7
```c
/*-------------------------------------------------------
从键盘输入5个整数输出其最大值、最小值、平均值。(注使用for循环
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int n,s,max,min,i;
double avg;
scanf("%d",&n);
s=max=min=n;
for(i=2;i<=5;i++)
{
scanf("%d",&n);
/**********Program**********/
if(n > max){
max = n;
}
if(n < min){
min = n;
}
s+=n;
/********** End **********/
}
avg=s/5.0;
printf("max=%d,min=%d,avg=%f\n",max,min,avg);
}
```
### C语言-8
```c
/*-------------------------------------------------------
编写程序输出从公元2000年至3000年所有闰年的年号每输出10个年号换一行。
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int year,count;
count=0;
for(year=2000;year<=3000;year++)
{
if(year%4==0&&year%100!=0 || year%400==0) {
printf("%-6d",year);
/**********Program**********/
count++;
if(count%10==0){
printf("\n");
}
}
/********** End **********/
}
}
```
### C语言-9
```c
/*-------------------------------------------------------
输入一个年月日要求输出这一天是该年的第几天。例如2000年3月2日是该年的第62天
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i, year,month,day,days;
days=0;
printf("请输入一年日期格式为yyyy-mm-dd");
scanf("%d-%d-%d",&year,&month,&day);
for(i=1;i<month;i++)
{
switch(i)
{
/**********Program**********/
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:days+=31;break;
case 2: days+=28;days += (year%4==0&&year%100!=0||year%400==0)?1:0;break;
default:
days+=30;
/********** End **********/ }
}
days=days+day;
printf("%d-%d-%d是这一年中的第%d天\n",year,month,day,days);
}
```
### C语言-10
```c
/*-------------------------------------------------------
求前100个素数输出时每个数占5个字符宽度10个一行,并输出其平均值。
结果:
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97 101 103 107 109 113
127 131 137 139 149 151 157 163 167 173
179 181 191 193 197 199 211 223 227 229
233 239 241 251 257 263 269 271 277 281
283 293 307 311 313 317 331 337 347 349
353 359 367 373 379 383 389 397 401 409
419 421 431 433 439 443 449 457 461 463
467 479 487 491 499 503 509 521 523 541
average=241.330000
-------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
main()
{
int i,j,k,m,sum;
double avg;
k=0;
sum=0;
for(i=2;k<100;i++)
{
m=sqrt(i);
/**********Program**********/
for(j=2;j<=m;j++){
if(i%j==0){
break;
}
}
if(j>m){
printf("%5d", i);
k++;
sum+=i;
if(k%10==0){
printf("\n");
}
}
/********** End **********/
}
avg=sum/100.0;
printf("\naverage=%f\n",avg);
}
```
### C语言-11
```c
/*-------------------------------------------------------
求100到200间的所有素数输出时每个数占5个字符宽度10个一行。要求在奇数中找素数。
结果:
101 103 107 109 113 127 131 137 139 149
151 157 163 167 173 179 181 191 193 197
199
-------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
main()
{
int i,j,k,m;
k=0;
for(i=101;i<200;i+=2 )
{
m=sqrt(i);
/**********Program**********/
for(j=2;j<=m;j++){
if(i%j==0){
break;
}
}
if(j > m){
printf("%5d", i);
k++;
if(k%10==0){
printf("\n");
}
}
/********** End **********/
}
}
```
### C语言-12
```c
/*-------------------------------------------------------
使用for循环输出99乘法表要求格式如图所示: (注:乘积占四个字符)
1x1=1 1x2=2 1x3=3 1x4=4 1x5=5 1x6=6 1x7=7 1x8=8 1x9=9
2x1=2 2x2=4 2x3=6 2x4=8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18
3x1=3 3x2=6 3x3=9 3x4=12 3x5=15 3x6=18 3x7=21 3x8=24 3x9=27
4x1=4 4x2=8 4x3=12 4x4=16 4x5=20 4x6=24 4x7=28 4x8=32 4x9=36
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25 5x6=30 5x7=35 5x8=40 5x9=45
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36 6x7=42 6x8=48 6x9=54
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 7x8=56 7x9=63
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64 8x9=72
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,j;
/**********Program**********/
for(i=1;i<10;i++){
for(j=1;j<10;j++){
printf("%dx%d=%-4d", i, j, i*j);
}
printf("\n");
}
/********** End **********/
}
```
### C语言-13
```c
/*-------------------------------------------------------
编写程序打印一个n行的菱形n由键盘输入
输入5
输出:
*
***
*****
***
*
-----------------------------------------------------*/
#include <stdio.h>
#include <math.h>
main()
{
int i,j,k,n;
printf("请输入一个奇数(行数)n:");
scanf("%d",&n);
for(i=-n/2; i<=n/2;i++)
{
/**********Program**********/
for(j=0;j<abs(i);j++){
printf(" ");
}
for(k=0;k<n-j*2;k++){
printf("*");
}
printf("\n");
/********** End **********/
}
}
```
### C语言-14
```c
/*-------------------------------------------------------
编程输出500以内的“水仙花数”。“水仙花数”是一个三位数其各位数字立方和等于该数本身15313+53+33使用for循环
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int a,b,c,i;
/**********Program**********/
for(i=100;i<500;i++){
a = i%10;
b = i%100/10;
c = i/100;
if(a*a*a + b*b*b + c*c*c == i)
/********** End **********/
printf("%d\n",i);
}
}
```
### C语言-15
```c
/*-------------------------------------------------------
斐波那契数列的前几项是1、1、2、3、5、8、13、21……编程输出该数列直到某项的值大于10000为止每行输出4个。
结果:
1 1 2 3
5 8 13 21
34 55 89 144
233 377 610 987
1597 2584 4181 6765
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int a,b,c,i;
a=b=1;
printf("%d\t%d\t",a,b);
for(i=3;;i++)
{
c=a+b;
if(c>10000)
break;
printf("%d\t",c);
/**********Program**********/
if(i%4==0){
printf("\n");
}
a = b;
b = c;
}
/********** End **********/
}
```
### C语言-16
```c
/*-------------------------------------------------------
斐波那契数列的前几项是1、1、2、3、5、8、13、21……编程输出该数列的前20项每行输出4个。
结果:
1 1 2 3
5 8 13 21
34 55 89 144
233 377 610 987
1597 2584 4181 6765
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int a,b,c,i;
a=b=1;
printf("%d\t%d\t",a,b);
for(i=3;i<=20;i++)
{
c=a+b;
printf("%d\t",c);
/**********Program**********/
if(i%4==0){
printf("\n");
}
a = b;
b = c;
/********** End **********/
}
}
```
### C语言-17
```c
/*-------------------------------------------------------
使用for循环输出99乘法表要求格式如图所示:(注:格式 %dx%d=%-4d)
1x1=1 1x2=2 1x3=3 1x4=4 1x5=5 1x6=6 1x7=7 1x8=8 1x9=9
2x1=2 2x2=4 2x3=6 2x4=8 2x5=10 2x6=12 2x7=14 2x8=16
3x1=3 3x2=6 3x3=9 3x4=12 3x5=15 3x6=18 3x7=21
4x1=4 4x2=8 4x3=12 4x4=16 4x5=20 4x6=24
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25
6x1=6 6x2=12 6x3=18 6x4=24
7x1=7 7x2=14 7x3=21
8x1=8 8x2=16
9x1=9
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,j;
/**********Program**********/
for(i = 1;i<10;i++){
for(j=1;j<=10-i;j++){
printf("%dx%d=%-4d", i, j, i*j);
}
printf("\n");
}
/********** End **********/
}
```
### C语言-18
```c
/*-------------------------------------------------------
使用for循环输出99乘法表要求格式如图所示:
1x9=9
2x8=16 2x9=18
3x7=21 3x8=24 3x9=27
4x6=24 4x7=28 4x8=32 4x9=36
5x5=25 5x6=30 5x7=35 5x8=40 5x9=45
6x4=24 6x5=30 6x6=36 6x7=42 6x8=48 6x9=54
7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 7x8=56 7x9=63
8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64 8x9=72
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<10-i;j++)
{
printf("\t");
}
/**********Program**********/
for(j=10-i;j<10;j++){
printf("%dx%d=%-4d", i, j, i*j);
}
printf("\n");
}
/********** End **********/
}
```
### C语言-19
```c
/*-------------------------------------------------------
使用for循环输出99乘法表要求格式如图所示:
1x1=1 1x2=2 1x3=3 1x4=4 1x5=5 1x6=6 1x7=7 1x8=8 1x9=9
2x2=4 2x3=6 2x4=8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18
3x3=9 3x4=12 3x5=15 3x6=18 3x7=21 3x8=24 3x9=27
4x4=16 4x5=20 4x6=24 4x7=28 4x8=32 4x9=36
5x5=25 5x6=30 5x7=35 5x8=40 5x9=45
6x6=36 6x7=42 6x8=48 6x9=54
7x7=49 7x8=56 7x9=63
8x8=64 8x9=72
9x9=81
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<i;j++)
{
printf("\t");
}
/**********Program**********/
for(j=i;j<10;j++){
printf("%dx%d=%-4d", i, j, i*j);
}
printf("\n");
}
/********** End **********/
}
```
### C语言-20
```c
/*-------------------------------------------------------
请编写输出以下图案的程序。(注意需要使用math库abs)
1
123
12345
1234567
12345
123
1
-------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
main()
{
int i,j;
for(i=-3;i<=3;i++)
{
/**********Program**********/
for(j=0;j<7-abs(i)*2;j++){
printf("%d", j+1);
}
printf("\n");
/********** End **********/
}
}
```