1、编写程序输出 100到200之间的全部素数(素数指只能被1和自己整除,而不能被其他数整除的整数)。
(基础题)
#include <stdio.h>
int main()
{
int i,j;
int flag;
for(i=100;i<200;i++)
{ flag=1;
for(j=2;j<i-1;j++)
if(i%j==0)
{
flag=0;break;
}
if(flag)
printf("%d\t",i);
}
}
?运行结果:
2、编写一个函数完成两个整型变量内容的对换,要求采用指针参数:并编写一个调用该函数的主函数,读入键盘输入的10个整数,并对其从小到大排序,并将排序结果输出。
(基础题)
#include <stdio.h>
int change(int *a,int *b);
int sort(int str[]);
int main()
{
int a,b;
int str[10];
printf("输入a,b:\n");
scanf("%d %d",&a,&b);
printf("现在a=%d\tb=%d\n",a,b);
change(&a,&b);
printf("交换后a=%d\tb=%d\n",a,b);
printf("输入10个数:\n");
for(int i=0;i<10;i++)
{
scanf("%d",&str[i]);
}
sort(str);
printf("排序后:");
for(int i=0;i<10;i++)
{
printf("%d\t",str[i]);
}
}
int change(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
int sort(int str[])
{
//int str[10];
for(int i=0;i<9;i++)
{
for(int j=0;j<10-i-1;j++)
{
if(str[j]>str[j+1])
{
int t=str[j];
str[j]=str[j+1];
str[j+1]=t;
}
}
}
}
运行结果:
3、编写函数,统计给定字符串中某字符出现的次数,并写一个调用它的主函数,对键盘输入的字符串,分别统计'@’以及'#出现的次数。
(基础题)
#include <stdio.h>
#include <string.h>
#define N 100
char cou(char str[]);
int main()
{
char st[N];
printf("输入字符串:\n");
gets(st);
printf("原字符串:\n");
puts(st);
cou(st);
}
char cou(char str[])
{
int i;
int at=0,jin=0;//分别用来统计@和#的个数
for(i=0;i<strlen(str);i++)
{
if(str[i]=='@')
at++;
if(str[i]=='#')
jin++;
}
printf("@的个数:%d\n#的个数:%d\t",at,jin);
}
运行结果:
4、从键盘输入40个学生的数据,每个学生的数据包括姓名(假定中间无空格)、三门课成绩,计算每个同学三门课的平均成绩,并将每个同学的姓名、三门课成绩以及平均成绩写入一个文本文件ouput.
(Low)
#include <stdio.h>
#include <stdlib.h>
#define N 40
void save();
struct St{
char name[20];
double cj[3];
double aver;
};
void put(struct St stu[])
{
printf("input:\n");
for(int i=0;i<N;i++)
{
scanf("%s%lf%lf%lf",stu[i].name,&stu[i].cj[0],&stu[i].cj[1],&stu[i].cj[2]);
stu[i].aver=(stu[i].cj[0]+stu[i].cj[1]+stu[i].cj[2])/3.0;
}
}
void save(struct St stu[])
{
FILE *fp;
if((fp=fopen("output.txt","wb"))==NULL)
{
printf("无法打开文件!\n");
return;
}
for(int i=0;i<N;i++)
if(fwrite(&stu[i],sizeof(struct St),1,fp)!=1)
printf("文件打开错误!\n");
fclose(fp);
}
int main()
{
struct St stu[N];
put(stu);
save(stu);
}
5、写一个单向链表处理程序,节点定义如下:
struct student{
char name[40];
int score;
struct student *next;
};
根据键盘输入的5个人的姓名和分数,建立个单向链表,并按照成绩进行排序(开降序自己确定),最后输出链表(已排好序)各节点的姓名和分数.
(中等题:原题改编)(大学c语言天花板)(数据结构入门)
#include <stdio.h>
#include <string.h>
struct student{
char name[40];
int score;
struct student *next;
};
int n;
struct student *creat()
{
struct student *p1,*p2,*head;
n=0;
p1=p2=(struct student *)malloc(sizeof(struct student));
printf("输入数据:\n");
scanf("%s %d",&p1->name,&p1->score);
head=NULL;
while(p1->score!=0)
{
n++;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct student *)malloc(sizeof(struct student));
//printf("input:\n");
scanf("%s%d",&p1->name,&p1->score);
}
p2->next=NULL;
return head;
}
void sort(struct student *head)
{
struct student *s1,*s2;
s1=(struct student *)malloc(sizeof(struct student));
s1=(struct student *)malloc(sizeof(struct student));
for(s1=head;s1!=NULL;s1=s1->next)
{
for(s2=s1->next;s2!=NULL;s2=s2->next)
{
if(s1->score>s2->score)
{
char t[10];
int temp;
temp=s1->score;
strcpy(t,s1->name);
s1->score=s2->score;
strcpy(s1->name,s2->name);
s2->score=temp;
strcpy(s2->name,t);
}
}
}
}
void print(struct student *head)
{
struct student *p;
printf("按分数从小到大输出:\n");
p=head;
if(head!=NULL)
{
do{
printf("%s\t%d\n",p->name,p->score);
p=p->next;
}while(p!=NULL);
}
}
int main()
{
struct student *head;
head=creat();
sort(head);
print(head);
}
运行结果:
|