分别用选择法和冒泡法对任意输入的N个不同的整数按升序排序并输出排序前后的各个数(提示:定义符号常量N代表需要排序的个数)。
选择法排序:
#include<stdio.h>
#define N 10
int main()
{
int i,j,t,a[N];
printf("please input N numbers: \n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<N-1;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;
}
printf("the sorted numbers: \n");
for(i=0;i<N;i++)
printf("%d",a[i]);
printf("\n");
return 0;
}
#include<stdio.h>
main()
{ int i,j,count[26]={0}; //存放各个字母出现的次数
char letter[26],zfc[100];// zfc[100]存放输入的字符串
for(i=0;i<26;i++)
letter[i]='a'+i;
printf("请输入一串字符:\n");
gets(zfc);
i=0;
while(zfc[i]!='\0')
{ for(j=0;j<26;j++)
if(zfc[i]==letter[j]||zfc[i]+32==letter[j])
count[j]++;
i++;
}
for(i=0;i<26;i++)
if(count[i]!=0)
printf("字母%c出现%d次\n",letter[i],count[i]);
printf("其它字母均未出现\n");
}
程序的功能为:在一行文字中,删除其中某个字符,需要删除的字符由键盘输入。
#include<stdio.h>
#include<string.h>
main()
{ char line[80],ch;
int i,j,len;
printf("输入一串字符 \n");
gets(line);
printf("输入要删除字符\n");
ch=getchar();
i=0;
while(line[i]!='\0' )
{ while(line[i]!='\n'&& line[i]!=ch) i++;
len=strlen(line);
for(j=i;j<len-1;j++)
line[j]=line[j+1]; //串中待删除字符之后的字符依次向前移动一个位置。
line[j]='\0';
}
puts(line);
}
从键盘接受一个字符串,判定输入的字符串是否为回文(所谓回文是指正序和逆序排列结果是同样的,例如字符串abcdEdcba为回文)。
#include<stdio.h>
#include<string.h>
int main()
{
int i,n;
char a[20];
printf("请输入一个字符串:\n");
gets(a);
n=strlen(a);
for(i=0;i<n;i++)
{
if(a[i]==a[n-1-i])
continue;
else
printf("此字符不是回文\n");
break;
}
if(i>=n)
printf("此字符是回文\n");
return 0;
}
有一行电文,已经按照如下规律译成密码:A→Z(a→z),B→Y(b→y),……即:第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求编程将密码(从键盘输入)译回原文,并输出密码和原文。
#include<stdio.h>
#include<string.h>
void main()
{
int i;
char a[26];
char b[26];
printf("请输入密码:\n");
gets(a);
for(i=0;i<26;i++)
{
if((a[i]>='A')&&(a[i]<='Z'))
b[i]=155-a[i];
else if((a[i]>='a')&&(a[i]<='z'))
b[i]=219-a[i];
else
b[i]=a[i];
}
printf("原文是:\n");
puts(b);
return 0;
}
有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数
#include<stdio.h>
int main()
{
int i,j,a,b,c,d,e;
char t[3][80];
a=0,b=0,c=0,d=0,e=0;
for(i=0;i<3;i++)
{
printf("请输入第%d列\n",i+1);
gets(t[i]);
for(j=0;j<80&&t[i][j]!='\0';j++)
{
if(t[i][j]>='A'&&t[i][j]<='Z')
a++;
else if(t[i][j]>='a'&&t[i][j]<='z')
b++;
else if(t[i][j]>='0'&&t[i][j]<='9')
c++;
else if(t[i][j]==' ')
d++;
else
e++;
}
}
printf("英文大写字母有%d个\n英文小写字母有%d个\n数字有%d个\n空格有%d个\n其他字符有%d个\n",a,b,c,d,e);
return 0;
}
#include <stdio.h>
#include <math.h>
float area(float a,float b,float c);
main() //1
{ //2
float a,b,c;
printf("请输入三角形的三个边长值:\n"); //3
scanf("%f%f%f",&a,&b,&c);//4
while(!(a+b>c&&a+c>b&&b+c>a))//5
{printf("不能构成一个三角形!\n");//6
printf("请重新输入三角形的三个边长值:\n");//7
scanf("%f%f%f",&a,&b,&c);//8
}
printf("Area=%f\n",area(a,b,c)); //9
}
float area(float a,float b,float c) //10
{float s,area_s; //11
s=(a+b+c)/2.0; //12
area_s=sqrt(s*(s-a)*(s-b)*(s-c));//13
return area_s;//14
}
程序的功能是:输出如下图形(以第30列为对称轴)
#include<stdio.h>
void a(int i) //1
{ int j; //2
for(j=1;j<=7-i;j++) //3
printf("%c",' '); //4
for(j=1;j<2*i;j++) //5
printf("%d", i ); //6
printf("\n"); //7
}
main() //8
{ int i; //9
for(i=1;i<=7;i++) a(i); //10
for(i=6;i>=1;i--) a(i); //11
}
下列程序的功能为:输入N个-100~100间的整数,若输入的数据不对,则重输,并计算其中的正整数之和。
#include<stdio.h>
#define N 10
int sum(int x[],int n)
{ int i=0,s=0;
while(i<=n)
{
if(x[i]>0)
s=s+x[i]; i++;
}
return s;
}
main()
{ int i=0,s,a[N];
do
{ printf("NO%d: ",i+1);
scanf("%d",&a[i]);
if((-100<=a[i])&&(a[i]<=100))
i++;
else
printf("wrong! input again...\n");
}while(i<N);
s=sum(a,N);
printf(" sum=%d\n",s);
}