一、指針 用指針方法編寫一個程序,輸入 3 個整數(shù),將它們按由小到大的順序輸出
#include <stdio.h>
void swap(int *pa,int *pb) {?
int temp;?
temp = *pa;?
*pa = *pb;?
*pb = temp;
}
void main() {?
int a,b,c,temp;
? scanf("%d%d%d",&a,&b,&c);?
? if(a>b)? swap(&a,&b);?
? if(b>c)? swap(&b,&c);?
? if(a>c)? swap(&a,&c);?
? printf("%d,%d,%d",a,b,c);
? }?
二、 編寫一個函數(shù),將一個字符串中的元音字母復(fù)制到另一個字符串,然后在主函數(shù)中輸出。
#include<stdio.h>
int main()
{void copy(char c[],char b[]);
char a[100],b[20];
gets(a);
copy(a,b);
puts(b);
return 0;
}
void copy(char c[],char b[])
{int i,j=0;
for(i=0;c[i]!='\0';i++)
if(c[i]=='a'||c[i]=='A'||c[i]=='e'||c[i]=='E'||c[i]=='i'||c[i]=='I'||c[i]=='O'||c[i]=='o'||c[i]=='u'||c[i]=='U')
{b[j]=c[i];j++;}
b[j]='\0';
return;
}
三、寫一函數(shù),對輸入的一組整數(shù)按由小到大的順序排序,在main主函數(shù)調(diào)用該函數(shù)實(shí)現(xiàn)排序 。
#include<stdio.h>
void main()
{void paixu(int a[],int n);
int a[100],i,n;
printf("需要對多少數(shù)進(jìn)行排序:");
scanf("%d",&n);
printf("請輸入要排序的一組數(shù)(用空格隔開):");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
paixu(a,n);
for(i=0;i<n;i++)
printf("%2d",a[i]);
printf("\n");
return;
}
void paixu(int a[],int n)
{int i,j,t;
? for(j=0;j<n;j++)
for(i=0;i<n-1-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
}
四、 編寫一個函數(shù),統(tǒng)計字符數(shù)組中大寫字母的個數(shù)。
#include <stdio.h>
int main()
{char string[100],Le;
int count(char s[]);
printf("input string:\n");
_gets(string)__;? ? ? ? ? //輸入字符串
Le=count(string);? ? ? ? ? ? //調(diào)用count函數(shù)
printf("大寫字母有%d個",Le);
return 0;
}
int count( char s[ ] )? ? ? ?
{int sum=0,i;
for (i=0;s[i]!='\0';i++)
if (s[i]>='A' && s[i]<='Z')
sum++;
? return sum;
}
五、從鍵盤輸入一個字符串,刪除其中的字母 a后輸出。例如,輸入字符串"abcaca",輸出 bcc。
#include <stdio.h>
#include <string.h>
void main()
{
? ? char a[100],b[100];int i,j=0;
gets(a);
for(i=0;(a[i]!='\0');i++)
if(a[i]!='a')
{b[j]=a[i];j++;}
b[j]='\0';
printf("%s\n",b);
}
六、 有一篇文章,共有3行文字,每行有80個字符,要求分別統(tǒng)計出其中英文大寫字母、小寫字母、數(shù)字、空格以及其他字符的個數(shù)。
#include <stdio.h>
#include <string.h>
void main()
{
char str[3][80];
int i,j,m=0,n=0,p=0,q=0,t=0;
for(i=0;i<3;i++)
gets(str[i]);
for(i=0;i<3;i++)
{
for(j=0;j<strlen(str[i]);j++)
{
if(str[i][j]>='A'&&str[i][j]<='Z')
m++;
else if(str[i][j]>='a'&&str[i][j]<='z')
n++;
else if(str[i][j]>='0'&&str[i][j]<='9')
p++;
else if(str[i][j]==' ')
q++;
else? t++;}
}
printf("大寫字母有%d個\n小寫字母有%d個\n數(shù)字有%d個\n空格有%d個\n其他字符有%d個\n",m,n,p,q,t);
}
七、 //求一個3×3的整數(shù)矩陣對角線元素之和。
#include <stdio.h>
void main()
{
int a[3][3],i,j,m=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
? ? ? ? if (i==j || i+j==2)
? m=m+a[i][j];
printf("%d\n",m);
}
八、 //用選擇法對10個整數(shù)排序。10個整數(shù)用scanf函數(shù)輸入。
#include <stdio.h>
void main()
{
int i,j,m,min,t,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
m=i;min=a[i];
for(j=i+1;j<10;j++)
{
if(min>a[j])
{min=a[j];m=j;}
}
t=a[i];a[i]=a[m];a[m]=t;
}
printf("排序后的數(shù)組為:\n");
for(i=0;i<10;i++)
printf("%d? ? ",a[i]);
}
九、 //用遞歸法求Fibonacci數(shù)列第n項的值。該數(shù)列有如下的特點(diǎn):第1個數(shù)和第2個數(shù)都為1,從第3個數(shù)開臺,每個數(shù)都是其前面兩個數(shù)之和。即:
#include<stdio.h>
long Fibonacci(int n)
{ long f;
if(n==0||n==1)
f=n;
else
f=Fibonacci(n-1)+Fibonacci(n-2);
return f;
}
int main()
{
int n;
scanf("%d",&n);
printf("F(%d)=%d\n",n,Fibonacci(n));
return 0;
}
十、 //寫一個判斷素數(shù)的函數(shù),在主函數(shù)輸入一個整數(shù),輸出是否素數(shù)的信息。
要求:
(1)函數(shù)名為prime,如果是素數(shù),函數(shù)返回值為1,如果不是素數(shù),函數(shù)返回值為0。
#include<stdio.h>
int prime(int x)
{int i,f;
for(i=2;i<x;i++)
{if (x%i==0)? break;}
if(i<x)? f=0;
else f=1;
return f;}
int main()
{int prime(int x);
int a,x;
scanf("%d",&x);
a=prime(x);
if (a==1)
? printf("是素數(shù)\n");
else
? printf("不是素數(shù)\n");
return 0;}
(2)保留判別素數(shù)的函數(shù),修改主函數(shù),要求實(shí)現(xiàn)輸出100~200之前的素數(shù)。
#include<stdio.h>
int prime(int x)
{int i,f;
for(i=2;i<x;i++)
{if (x%i==0)? break;}
if(i<x)? f=0;
else f=1;
return f;}
int main()
{int prime(int x);
int a,x;
for (x=100;x<=200;x++)
{a=prime(x);
if (a==1)
? printf("%5d",x);
}
return 0;}
十一、 //輸出100以內(nèi)所有能被3整余但不能被5整除的數(shù),按每5個數(shù)的形式輸出。
#include <stdio.h>
void main()
{ int i,k=0;
? ? for (i=1;i<=100;i++)
{ if (i%3==0 && i%5!=0)
{printf("%4d",i);
? k++;
? if (k%5==0) printf("\n");
}
}
printf("\n個數(shù):%d\n",k);
}
十二、 // 輸入一行字符,分別統(tǒng)計出其中的英文字母、空格、數(shù)字和其他字符的個數(shù)。
#include <stdio.h>
void main()
{
int a=0,b=0,c=0,d=0;
char j;
for(;(j=getchar())!='\n';)
{? if('a'<=j && 'z'>=j || 'A'<=j &&'Z'>=j)
a++;
else if('0'<=j && '9'>=j)
b++;
else if(' '==j)
c++;
else d++;
}
printf("字母%d 數(shù)字%d 空格%d 其他%d\n",a,b,c,d);
}
十三、 //自己編寫一個求x的n次方的函數(shù)(函數(shù)名為power,n為整數(shù)),在主函數(shù)中輸入x和n的值,調(diào)用函數(shù)求出x的n次方。
#include<stdio.h>
double power(int x,int n)
{double t=1;
for(;n>=1;n--)
t=t*x;
return t;
}
void main()
{int x,n;
printf("輸入x和n的值:");
scanf("%d%d",&x,&n);
power(x,n);
printf("%.0f\n",power(x,n));
return;
}
十四、 /*以下程序的功能為:通過輸入年份和月份,判斷該月的天數(shù)。請?zhí)羁铡?/p>
分析:
(1)一年中1、3、5、7、8、10、12月份均為31天;4、6、9、11月份均為30天;如果該年是閏年,則2月份為29天,否則為28天。
(2)閏年的條件是:能被4整除但不能被100整除,或者能被400整除。*/
#include<stdio.h>
int main()
{ int y,m,d;
? printf("請輸入年份和月份");
? scanf("%d,%d",&y,&m);
? switch(m)
? {case 2:
? ? ? ? ? if (m%4==0&&m%100!=0 || m%400==0) //判斷是否為閏年
? d=29;
? else
? d=28;
? break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: d=31;break;
case 4:
case 6:
case 9:
case 11:d=30;
? }
? printf("%d年%d月份有%d天\n",y,m,d);
return 0;
}
十五、 /*打印如下圖形。請?zhí)羁铡?/p>
? ? ? *
? ? * * *
? * * * * *
* * * * * * *
*/
#include<stdio.h>
int main()
{ int i,j;
? for (i=1;i<=4;i++)
{for (j=1;j<=10-i;j++) ? ? printf(" ");? ? //輸出*之前的空格
? for (j=1; j<=2*i-1;j++) printf("*");// 輸出每一行的"*"
? ? ? printf("\n");? ? //輸完每一行后換行
? ? }
? return 0;
}
十六、 /*輸出如下圖形。
? ? ? ? ? ? ? ? 1
? ? ? ? ? ? ? 1 2 1
? ? ? ? ? ? 1 2 3 2 1
? ? ? ? ? 1 2 3 4 3 2 1
? ? ? ? 1 2 3 4 5 4 3 2 1
? ? ? 1 2 3 4 5 6 5 4 3 2 1
? ? 1 2 3 4 5 6 7 6 5 4 3 2 1
? 1 2 3 4 5 6 7 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1
*/
#include<stdio.h>
int main()
{ int i,j;
? for (i=1;i<=9;i++)
{for (j=1;j<=20-i;j++)? ?
printf(" ");? ?
? for (j=1;j<=i;j++)
? printf("%d",j);
? ? ? for (j=i-1;j>=1;j--)
? printf("%d",j);
? printf("\n");? ?
? ? }
? return 0;
}
十七、 // S=1/2+2/3+3/5+5/8+……? (前20項的和)? (12.278297)
#include <stdio.h>
void main()
{ int i,m=1,n=2,a;
float b,s=0;
for(i=1;i<=20;i++)
? {
b=(float)m/n;a=n;n=m+n;m=a;
s=s+b;}
printf("%f\n",s);
}
十八、 //S=1!+2!+3!+……10!進(jìn)制 (4037913)
方法一:
#include <stdio.h>
void main()
{
int i,a=1,b=0;
for(i=1;i<=10;i++)
{a=a*i;
b=b+a;}
printf("%d\n",b);
}
方法二:
#include<stdio.h>
void main()
{int i,s,a,n;
s=0;
for(i=1;i<=10;i++)
{
? for(n=1,a=1;n<=i;n++)
? ? a=a*n;
? s=s+a;
}
printf("s=%d\n",s);
}