资源描述
1、杨辉三角:
#include<stdio.h>
int main()
{
int a[10][10]={0};
a[0][0]=a[1][0]=a[1][1]=1;
printf("%d\n",a[0][0]);
for(int i=1;i<8;i++)
{
a[i][0]=1;
printf("%d\t",a[i][0]);
for(int j=1;j<i;j++)
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
printf("%d\t",a[i][j]);
}
a[i][j]=1;
printf("%d\t",a[i][j]);
printf("\n");
}
}
2、求最大连续数
int main()
{
int a[5]={3,1,3,4,2};
int sum[5],i;
sum[0]=3;
int weizhi[5]={-1,-1,-1,-1,-1};
weizhi[0]=-1;
for(i=1;i<5;i++)
{
sum[i]=a[i];
if(sum[i-1]+a[i]>a[i])
{
sum[i]=sum[i-1]+a[i];
weizhi[i]=i-1;
}
}
int max=sum[0],max_i=0;
for(i=0;i<5;i++)
{
printf("%d\n",sum[i]);
if(max<sum[i])
{
max=sum[i];
max_i=i;
}
}
printf("位置:");
i=max_i;
while(i>=0)
{
printf("%d\t",i);
i=weizhi[i];
}
printf("\n");
return 0;
}
3、判断字符串是否为回文
int main()
{
char str[6]="paeap";
int length=strlen(str);
char str1[6];
int i,j=0;
str1[5]='\0';
for(i=length-1;i>=0;i--)
{
str1[j]=str[i];
j++;
}
printf("%d",length);
if(strcmp(str,str1)==0)
{
printf("回文。");
}
return 0;
}
4、求输入单词数量:
int main()
{
char ch;
int count=0;
int inword=0;
while((ch=getchar())!='\n')
{
putchar(ch);
if(ch==' ')
{
inword=0;
}
else
{
if(inword==0)
{
count++;
inword=1;
}
}
}
printf("单词数量为:%d",count);
return 0;
}
5、筛选法求2-n间的素数
int main()
{
printf("输入2-N:\n");
int n;
scanf("%d",&n);
int primes[200];
int a[200];
int k=0;
int flag=0;
for(int i=0;i<=n;i++)
{
a[i]=i;
}
int j=2;
int num=n-1;
while(num>0)
{
flag=1;
for(int i=2;i<=sqrt(j);i++)
{
if(j%i==0)
{
flag=0;
break;
}
}
if(flag==1)
{
primes[k++]=j;
int p=j;
int g=1;
int x=p;
while(x<=n)
{
if(a[x]==0)
{
g++;
x=g*p;
}
else
{
a[x]=0;
num--;
g++;
x=g*p;
}
}
}
j++;
}
for(int f=0;f<k;f++)
{
printf("%d\t",primes[f]);
}
return 0;
}
6、选择排序
int main()
{
int a[5]={1,3,2,5,4};
int i=0,j=0;
for(i=0;i<5;i++)
{
int k=i;
for(j=i;j<5;j++)
{
if(a[j]<a[k])
{
k=j;
}
}
if(k!=i)
{
int t=a[k];
a[k]=a[i];
a[i]=t;
}
}
for(int k=0;k<5;k++)
{
printf("%d",a[k]);
}
return 0;
}
7、折半查找
int main()
{
int a[5]={1,3,5,7,9};
printf("请输入一个数:");
int num;
scanf("%d",&num);
int top=0,end=4,mid;
while(top<=end)
{
mid=(top+end)/2;
if(a[mid]==num)
{
printf("%d",mid);
break;
}else if(a[mid]>num)
{
end=mid;
}else
{
top=mid;
}
}
return 0;
}
8、冒泡排序
int main()
{
int a[5]={2,3,4,7,2};
int i=0,j=0;
for(i=1;i<5;i++)
for(j=0;j<5-i;j++)
{
if(a[j]>a[j+1])
{
int t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(int k=0;k<5;k++)
{
printf("%d\t",a[k]);
}
return 0;
}
9、字符串参数逆序存放
int main()
{
char str[6]="hello";
char c;
int n=strlen(str),i;
for(i=0;i<=n/2;i++)
{
c=str[i];
str[i]=str[n-i-1];
str[n-i-1]=c;
}
puts(str);
return 0;
}
10、两个字符串连接起来
int main()
{
char s1[6]="hello";
char s2[6]="C pro";
int i=0;
int s1length=strlen(s1);
while(s2[i]!='\0')
{
s1[s1length+i]=s2[i];
i++;
}
s1[s1length+i]='\0';
puts(s1);
return 0;
}
11、将字符串中的小写转化为大写
int main()
{
char str[6]="heLLo";
for(int i=0;str[i]!='\0';i++)
{
if(str[i]<=122&&str[i]>=97)
{
str[i]=str[i]-32;
}
}
puts(str);
}
12、将实数参数转化为字符串
int main()
{
float a=1.23;
int p=int(a);
int t;
p=a-p;
while(p!=0)
{
t=(int)p*10;
printf("%d",t);
p=p*10-((int)p*10);
}
return 0;
}
13、马鞍点,行最大值,列最小值
int main()
{
printf("这是一个几行几列的矩阵:\n");
int row,lie,a[10][10]={0};
int i,j;
scanf("%d%d",&row,&lie);
printf("请输入这个矩阵的值:\n");
for(i=0;i<row;i++)
for(j=0;j<lie;j++)
{
scanf("%d",&a[i][j]);
}
printf("马鞍点是:\n");
for(i=0;i<row;i++)
{
int flag=1;
int max=a[i][0],max_i=i,max_j=0;
for(int k=0;k<lie;k++)
{
if(max<a[i][k])
{
max_j=k;
max=a[i][k];
}
}
for(j=0;j<row;j++)
{
if(max<a[j][max_j])
{
flag =0;
break;
}
}
if(flag==0)
{
continue;
}
printf("%d,%d,%d\n",max_i,max_j,max);
}
return 0;
}
14、利用字符串读写函数实现文件的复制
int main()
{
FILE *fp1,*fp2;
char str[len];
if((fp1=fopen("1.txt","r"))==NULL)
{
printf("Open File Error!");
exit(1);
}
if((fp2=fopen("2.txt","w"))==NULL)
{
printf("Open File Error!");
exit(1);
}
while(!feof(fp1))
{
fgets(str,len,fp1);
fputs(str,fp2);
}
fclose(fp1);
fclose(fp2);
return 0;
}
15、计算文本文件的行数以及每行的字符数
int main()
{
FILE *fp1;
int a[10]={0};
int num=0;
int i=0,k;
char c;
if((fp1=fopen("1.txt","r"))==NULL)
{
printf("OPen file error!");exit(1);
}
while(!feof(fp1))
{
if((c=fgetc(fp1))=='\n')
{
num++;
i++;
}
else
{
if(c==EOF)
{
num++;
break;
}
a[i]++;
}
}
fclose(fp1);
printf("%d\n",num);
for(k=0;k<=i;k++)
{
printf("%d\t%d\n",k,a[k]);
}
return 0;
}
16、从键盘输入一个字符串,将大写字母转为小写,存到text.txt中。
int main()
{
FILE *fp1;
char str[20];
int i;
printf("请输入一个字符串:\n");
gets(str);
for(i=0;str[i]!='\0';i++)
{
if(str[i]<=90&&str[i]>=65)
{
str[i]=str[i]+32;
}
}
if((fp1=fopen("test.txt","w"))==NULL)
{
printf("open file erro!");exit(1);
}
fprintf(fp1,"%s",str);
fclose(fp1);
return 0;
}
17、从键盘输入若干行字符,输入后把它们存到一个文件中,再从文件中读入这些数据,将其中的小写换成大写后输出。
int main()
{
FILE *fp1;
char ch;
if((fp1=fopen("text.txt","a+"))==NULL)
{
printf("open file error!");exit(1);
}
printf("输入字符串,以*号结束输入:\n");
while((ch=getchar())!='*')
{
fputc(ch,fp1);
}
rewind(fp1);
while(!feof(fp1))
{
ch=fgetc(fp1);
putchar(ch);
}
return 0;
}
18、插入排序
int main()
{
int a[9]={4,2,6,8,1,7,3,10,9};
int j,i;
for(i=1;i<9;i++)
{
int k=a[i];
j=i-1;
while(j>=0&&k<a[j])
{
j--;
a[j+1]=a[j];
}
a[j+1]=k;
}
for(i=0;i<9;i++)
{
printf("%d\t",a[i]);
}
return 0;
}
19、用递归法将一个整数N转换成字符串。N的位数不确定
void GetNum(int n)
{
if(n>0)
{
GetNum(n/10);
printf("%d",n%10);
}
}
int main()
{
int a;
printf("请输入一个整数:\n");
scanf("%d",&a);
GetNum(a);
printf("\n");
return 0;
}
20、编写一个函数,输入一行字符,将此字符串中最长单词输出。
int main()
{
char str[100];
int inword=0;
int maxlength=0;
int length=0;
int i;
int start=0,end=0;
printf("输入一行字符:\n");
gets(str);
for(i=0;str[i]!='\0';i++)
{
if(str[i]==' ')
{
if(maxlength<length)
{
end=i-1;
start=end-length+1;
maxlength=length;
}
length=0;
}
else
{
length++;
}
}
if(maxlength<length)
{
end=i-1;
start=end-length+1;
maxlength=length;
}
printf("%d%d%d",start,end,length);
return 0;
}
21、编写一个函数,输入一个十六进制数,输出相应的十进制数。
double GetShiJinZhi(int n)
{
double sum=0;
int i=0;
while(n>0)
{
int m=n%10;
sum=sum+m*pow(16,i);
n=n/10;
i++;
}
return sum;
}
int main()
{
int a;
int b;
printf("请输入一个十六进制数:\n");
scanf("%d",&a);
b=(int)GetShiJinZhi(a);
printf("%d\n",b);
return 0;
}
22、编程找到并且输出2-n间所有素数的程序。
int main()
{
int n,i,j,count,flag;
printf("请输入N:\n");
scanf("%d",&n);
for(i=2;i<=n;i++)
{
flag=1;
for(j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
flag=0;
break;
}
}
if(flag==1)
{
count++;
printf("%d\t",i);
if(count%4==0)
{
printf("\n");
}
}
}
printf("\n");
return 0;
}
23、编写一个判断一个仅有加减乘除的算术表达式是否合法的函数,如(3+4)*5是合法的,但(3+4*5是不合法的。
int main()
{
char str[10];
int i=0;
int flag=1;
int yes=1;
printf("请输入一个表达式:\n");
scanf("%s",str);
for(i=0;str[i]!='\0';i++)
{
if(str[i]=='+'||str[i]=='-'||str[i]=='*'||str[i]=='/')
{
if(flag==0)
{
yes=0;
break;
}
flag=0;
}else
{
flag=1;
}
}
if(yes==1)
{
printf("yes\n");
}
else
{
printf("no\n");
}
return 0;
}
24、已有文本文件test.txt编写一个程序,读取test.txt,统计各单词出现的次数,并将各单词和其出现的次数输出到屏幕和文件中。
typedef struct danci
{
char str[20];
int num;
}Words;
int n;
void check(Words a[],char str[])
{
int i;
int flag=1;
for(i=0;i<n;i++)
{
if( strcmp(a[i].str,str)==0)
{
flag=0;
a[i].num=a[i].num+1;
break;
}
}
if(flag==1)
{
strcpy(a[n].str,str);
a[n].num=1;
n=n+1;
}
}
int main()
{
FILE *fp,*fp1;
char s[20][20]={'\0'};
Words a[20];
char ch;
int i=0,j=0;
if((fp=fopen("test.txt","a+"))==NULL)
{
printf("open file error!\n");
exit(1);
}
if((fp1=fopen("text.txt","wb"))==NULL)
{
printf("open file error!\n");
exit(1);
}
ch=fgetc(fp);
while(ch!=EOF)
{
if(ch!=' ')
{
s[i][j++]=ch;
}
else
{
j=0;
i++;
}
ch=fgetc(fp);
}
n=0;
for(j=0;j<=i;j++)
{
check(a,s[j]);
}
for(j=0;j<n;j++)
{
printf("%s\t",a[j].str);
printf("%d\n",a[j].num);
}
fwrite(&a,sizeof(Words),n,fp1);
fclose(fp);
fclose(fp1);
return 0;
}
25、若有正整数从左右读都是一样的,则称为回数。判断输入的数是否为回数。
int getNiShu(int n)
{
int sum=0;
while(n>0)
{
sum=sum*10+n%10;
n=n/10;
}
return sum;
}
int main()
{
int n;
int NiShu;
printf("请输入一个数:\n");
scanf("%d",&n);
NiShu=getNiShu(n);
if(n==NiShu)
{
printf("%d是回数。\n",n);
}else
{
printf("%d不是回数。\n",n);
}
return 0;
}
展开阅读全文