编写程序,输入一行字符,分别统计其中的大写字母个数和小写字母个数以及数字个数。
#inclde
int main()
{char a[3];
char str;
int i;
int b[5]={0};
gets(a);
for(i=0;(str=a[i])!='\0';i++)
{
if(str>='A'&&str<='Z')
b[0]++;
else if(str>='a'&&str<='z')
b[1]++;
else if(str>='0'&&str<='9')
b[2]++;
}
printf("大写字母=%d\n",b[0]);
printf("小写字母=%d\n",b[1]);
printf("数字=%d\n",b[2]);
return 0;
}
水仙花数,
int main(){
int i = 0;
for (i = 100; i< 1000; i++){
int a = i % 10;//获得个位
int b = i / 10 % 10;//获得十位
int c = i / 100;//获得百位
if (a*a*a + b*b*b + c*c*c == i)
printf("水仙花数:%d\n", i);
}
return 0;
}
求5×5矩阵两条对角线上的各元素之和。
#include
int main()
{
int i,j,sum1,sum2,matrix[5][5];
sum1=0,sum2=0;
printf("请为该矩阵输入元素:");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&matrix[i][j]);
for(i=0,j=0;i<5;i++,j++)
sum1+=matrix[i][j];
for(i=4,j=0;i>=0;i--,j++)
sum2+=matrix[i][j];
printf("主对角线上元素的和为:%d\n斜对角线上的元素的和为:%d\n",sum1,sum2);
return 0;
}
输出3~100以内的所有素数,每行输出5个值。
#include
int main()//3-100的素数
{
int i, j, n = 0;
for (j = 3; j<= 100; j++)
{
for (i = 2; i<= j - 1; i++)
{
if (j%i == 0)
break;
}
if(i >= j)
{
n++;
printf("%d ", i);
if (n % 5 == 0)
printf("\n");
定义学生结构体类型,成员包括学号、姓名、3门课程的成绩、平均成绩。用一个函数实现5个学生数据(包括学号、姓名、3门课程的成绩)的输入,用另一个函数负责求每个学生三门课程的平均成绩,再用一个函数求出平均分最高的学生的序号。要求在主函数中输出平均分最高的学生的数据。
#include
struct Student
{
int num; char name[20]; float score[3]; float aver;
};
int main()
{
void input(struct Student stu[]);
int max(struct Student stu[]);
void aver(struct Student *stu);
struct Student stu[5],*p=stu;
int i;
input(p);
aver(p);
i=max(p);
printf("学号:%d\n姓名:%s\n成绩:%f %f %f\n平均成绩:%f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].aver);
return 0;
}void input(struct Student stu[])
{ int i;
printf("请输入各学生的信息:学号、姓名、三门课成绩:\n");
for(i=0;i<5;i++)
scanf("%d %s %f %f %f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
}
int max(struct Student stu[])
{int i,m=0;
for(i=1;i<5;i++)
if (stu[i].aver>stu[m].aver) m=i;
return m;
}
void aver(struct Student *stu)
{ int i;
for(i=0;i<5;i++)
stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;
}
)学生成绩统计:先输入某班级学生总人数,后输入该班每个学生的成绩,要求计算并输出该班学生的平均成绩、最高成绩和最低成绩。要求使用动态内存分配来实现。
#include
#include
int main()
{
float *p,max=-1,min=101,aver=0;
int i,num;
scanf("%d",&num);
p=(float *)calloc(sizeof(float),num);
for(i=0;i
{
scanf("%f",p+i);
if(*(p+i)>max)
max=*(p+i);
else if(*(p+i)
min=*(p+i);
aver+=*(p+i);
}
aver/=num;
printf("平均分:%f最高分:%f最低分:%f\n",aver,max,min);
return 0;
}
定义并调用自定义函数void mystrncpy(char *t,char *s,int n),使用该函数实现字符串复制:输入一个字符串s和一个正整数n,将字符串s中从头开始的n个字符复制到字符串t中。要求在主函数中输入字符串s,并输出字符串s和字符串t。
#include
void mystrncpy(char *t,char *s,int n)
{
int i;
for(i=0;i
if((t[i]=s[i])=='\0')
return;
t[i]='\0';
return;
}
int main()
{
char t[100],s[]="I love china";
mystrncpy(t,s,10);
printf("%s\n",t);
return 0;
}
一个数组中的n个值已经按升序排列存放,输入一个数,编程查找是否有该数,有则显示其所在的位置,没有则显示 “No Found”,通过指针实现。
#include
int main()
{
int j,a[]={0,1,2,3,4,5,6,7,8,9},*p=a;
scanf("%d",&j);
for(;p
if(*p==j)
{
printf("%d",p-a+1);
break;
}
if(p==a+10)
printf("Not Found");
return 0;
}
有两个磁盘文件dfileA.txt和dfileB.txt,各存放一行字母(不多于80个),现要求把两个文件中的信息合并(按照字母顺序排列),输出到一个新文件dfileC.txt中。
#include
#include
#include
int main()
{
FILE *fp1,*fp2,*fp3;
char ch,str1[160],str2[80];
int i,j;
if((fp1=fopen("dfileA.txt","r"))==NULL)
{
printf("file open error!");
exit(0);
}
if((fp2=fopen("dfileB.txt","r"))==NULL)
{
printf("file open error!");
exit(0);
}
if((fp3=fopen("dfileC.txt","w"))==NULL)· ·
{
printf("file open error!");
exit(0);
}
i=0;
while(!feof(fp1))
str1[i++]=fgetc(fp1);
str1[i]='\0';
printf("%s\n",str1);
i=0;
while(!feof(fp2))
str2[i++]=fgetc(fp2);
str1[i]='\0';
printf("%s\n",str2);
strcat(str1,str2);
printf("%s\n",str1);
for(i=0;i
for(j=0;j
if(str1[j]>str1[j+1])
{
ch=str1[j];
str1[j]=str1[j+1];
str1[j+1]=ch;
}
}
fputs(str1,fp3);
fclose(fp1);
fclose(fp2);
fclose(fp3);
return 0;
}
输入3个正整数,判断是否能够构成三角形,如果能则计算三角形的周长和面积,否则输出“不能构成三角形!”。
我的答案:
#include
#include
int main(){
double a,b,c,s,area;
scanf("%1f %1f %1f",&a,&b&c);
if(a+b>c&&a+c>b&&c+b>a){
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c);
printf("area=%1f",area);
}
else printf("不能构成三角形!");
return 0;
}
学校有近千名学生,在操场上排队,5人一行余2人,7人一行余3人,3人一行余1人。编写程序,求该校的学生人数。
#include
main(){
int i;
for(i=950;i<=1150;i++){
if(i%5==2&&i%7==3&&i%3==1){
printf("%d\n",i);
}}
return 0;}
输入5个整数,找出大数和最小数所在的位置,并把两者对调 ,然后输出调整后的5个数。mian()
{
int a[5],max,min,i,j,k;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
min=a[0];
for(i=1;i<5;i++)
if(a[i]
{min=a[i];
k=i;}
max=a[0];
for(i=1;i<5;i++)
if(a[i]>max)
{max=a[i];
j=i;}
a[k]=max;
a[j]=min;
printf("%3d",k);//最小值输出
printf("%3d",j);//大值输出
for(i=0;i<5;i++)
printf("%d",a[i]);
}
6. (简答题,8.5分)编写一个书名排序程序,输入10个书名并存入一个二维数组,用函数void sortstring( char *name[] , int n)实现它们的字典顺序。
#include "stdio.h"
#include "string.h"
void sort(char (*name)[20],int n){
int i,j,k;
char t[20];
for(i=0;i
for(k=i,j=k+1;j
if(k!=i){
strcpy(t,name[k]);
strcpy(name[k],name[i]);
strcpy(name[i],t);
}
}
}
逆序排列
#include
int main(){
void sort(int a[],int n); //函数声明
int a[20]={0},i,num=0;
int *p=a; //定义一个指针变量
scanf("%d",&num);
for(i=0;i
scanf("%d",p++);
p=a;
sort(p,num);
for(i=0,p=a;i
printf("%d,",*p++);
return 0;
}
void sort(int a[],int n){
int i,t;
for(i=0;i
t=a[i];
a[i]=a[n-i-1];
a[n-i-1]=t;
}
}
)编写自定义函数,实现如下功能:一个数组有n个整数,使前面各数顺序向后移动m个位置,移出的数再从开头移入。要求在主函数中输入n的值,由随机函数rand()产生n个整数存入数组,调用自定义函数后,在主函数中输出调整后的n个数。
正确答案:
#include
#include
#include
void move(int arry[],int n,int m);
int main()
{
int arry[100],n,m,temp,i,j;
srand(time(NULL));
scanf("%d",&n);
for(i=0;i
{
printf("%d ",arry[i]);
}
scanf("%d",&m);
printf("\n");
move(arry,n,m);
for(i=0;i
printf("%d ",arry[i]);
return 0;
}
void move(int arry[],int n,int m)
{
int temp,i,j;
for(i=0;i
{
temp=arry[n-1];
for(j=n-1;j>0;j--)
arry[j]=arry[j-1];
arry[0]=temp;
}
}
同构数
#include
int main()
{int i;for(i=1; i<100; i++){if(i*i%10==i||i*i%100==i){
printf("%-4d",i);
}} return 0;
}
冒泡排序
#include
int main()
{
int i,j,t,a[10];
printf("输入10个整数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++) //变量i仅代表比较的趟数(n-1)趟
for(j=0;j<9-i;j++)
if(a[j]>a[j+1]) //相邻两个数相互比较
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
return 0;
}
选择排序
#include
int main()
{
int i,j,t,a[10];
printf("请输入10个整数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]); //输入10个整数存到数组里
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
if(a[i]>a[j]) //如果前一个数比后一个大,则调换值
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
插入排序
#include
int main()
{
void insert(int a[],int first,int last);
int i,a[10];
printf("输入10个整数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
insert(a,0,9);
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
return 0;
}
void insert(int a[],int first,int last)
{
int i,j,t;
for(i=first+1;i<=last;i++)
{
t=a[i];
j=i-1;
while((j>=0) && (a[j]>t))//与已排序的数逐一比较,大于t时,该数移后
{
a[j+1]=a[j];
j--;
}
a[j+1]=t;
}
}
矩阵装置
//3*3矩阵的转置
void Print(int a[][3]){
int i = 0, j = 0;
for (i = 0; i< 3; i++){
for (j = 0; j< 3; j++){
printf("%d ", a[i][j]);
}
printf("\n");
}
printf("\n");
}
int main(){
int a[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int i = 0, j = 0;
printf("转置之前=============\n");
Print(a);
//转置
for (i = 0; i< 3; i++){
for (j = 0; j< i; j++){
int t = a[i][j];
a[i][j] = a[j][i];
a[j][i] = t;
}
}
printf("转置之后=============\n");
Print(a);
return 0;
}
目录
输入5个整数,找出大数和最小数所在的位置,并把两者对调 ,然后输出调整后的5个数。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧