#include
/*
3、用一维数组解如下问题:读取20个在10到100之间的不重复的整数。每读取一个值时,如果它与已读取的值
不重复,就打印该值。用尽可能小的数组解决这个问题。
*/
void noRepeat() {
int a[20];
int i;
int j;
int count = 0;
printf("\n请输入20个10-100的整数:\n");
for (i=0; i<20; i++) {
scanf("%d",&a[count]);
if (a[count]<10 || a[count]>100) {
printf("输入错误!\n");
i--;
continue;
}
for (j=0; j
break;
}
}
if (j == count) {
printf("[%d]\n",a[count]);
count++;
}
}
}
/*
5、Eratoshenes筛选是一种寻找素数的方法,该方法表述如下:
1)创建一个一维数组,把所有的元素初始化为1(表示真),下标为素数的元素保持1不变,其它下标的元素
最终被置为0
2)从数组下标2出发,每次发现值为1的数组元素时,则看其后的所有元素,把下标是它们倍数的那些元素置
为0。例如,对下标2来说,凡是2的倍数的下标(4,6,8,10,···)都将其元素置为0,对下标3来说,
凡是否的倍数的下标(6,9,12,15,···)将其元素置为0。
当以上过程结束后,仍为1的数组元素的下标就是素数,将这些下标打印输出即可。编写程序,
用含有1000个元素的数组确定并打印出1~999之间的所有素数
*/
void Eratoshenes() {
int a[1000];
int i;
int j;
for (i=2; i<1000; i++) {
a[i] = 1;
}
for (i=2; i<1000; i++) {
if (a[i] == 1) {
for (j=2; j*i<1000; j++) {
a[j*i] = 0;
}
}
}
for (i=2; i<1000; i++) {
if (a[i] == 1) {
printf("%d ",i);
}
}
}
/*
7、学生成绩统计。某班共6名学生,学习6门功课(数学分析,高等代数,大学物理,计算导论,经济学,英语),
每门功课有平时,期中和期末三项成绩,按平时占20%,期中占30%,期末占50%,求每人每门功课的平时成绩和
各个人6门功课的平均成绩及总平均成绩,最后要求按各人平均成绩的高低排序并打印成表格
*/
void func_average(int s[6][6][3], int a[6]){
int i;
int j;
float temp;
for (i=0; i<6; i++) {
temp = 0;
for (j=0; j<6; j++) {
temp += s[i][j][0] * 0.2f + s[i][j][1] * 0.3f + s[i][j][2] * 0.5f;
}
a[i] = (int)(temp / 6);
}
}
void func_score() {
int score[6][6][3] = {
{{10,10,10},{10,10,10},{10,10,10},{10,10,10},{10,10,10},{10,10,10}},
{{20,20,20},{20,20,20},{20,20,20},{20,20,20},{20,20,20},{20,20,20}},
{{30,30,30},{30,30,30},{30,30,30},{30,30,30},{30,30,30},{30,30,30}},
{{40,40,40},{40,40,40},{40,40,40},{40,40,40},{40,40,40},{40,40,40}},
{{50,50,50},{50,50,50},{50,50,50},{50,50,50},{50,50,50},{50,50,50}},
{{60,60,60},{60,60,60},{60,60,60},{60,60,60},{60,60,60},{60,60,60}}
};
char name[6][20] = {"abc","xyz","def","ghi","aaa","bbb"};
int average[6] = {0};
int index[6];
int i;
int j;
int temp;
func_average(score,average);
for (i=0; i<6; i++) {
index[i] = 0;
for (j=0; j<6; j++) {
if (average[index[i]]!=-1 && average[j]>=average[index[i]]) {
index[i] = j;
}
}
average[index[i]] = -1;
}
func_average(score,average);
for (i=0; i<6; i++) {
printf("%4s",name[index[i]]);
for (j=0; j<6; j++) {
temp = (int)(score[index[i]][j][0] * 0.2f +
score[index[i]][j][1] * 0.3f + score[index[i]][j][2] * 0.5f);
printf("%3d",temp);
}
printf("%3d\n",average[index[i]]);
}
}
/*
8、已知一个有限输入字符集合?={a,b},写一个程序能够识别集合L={anbn:0≤n≤N}。
说明:该问题实质上是判定输入字符串是否呈现aa ··· abb ··· b (a,b均为n个) 。
设字符串string有c个字符,则c=2n,且string[1]=··· =string[n]=a, string[n+1]= ···
=string[2n]=b (或进一步有这样的关系string[1],string[2]··· ,string[n]={a}, string[n+1],
string[n+2],··· ,string[2n]={b})。
*/
void f(char *str) {
int i = 0;
int j = 0;
char a;
char b;
char *p;
a = str[0];
for (i=0,p=str; *p!=0; p++,i++) {
if (a != *p) {
b = *p;
break;
}
}
for (j=0; *p!=0; p++,j++) {
if (b != *p) {
printf("不属于集合!\n");
return;
}
}
if (i == j) {
printf("属于集合!\n");
} else {
printf("不属于集合!\n");
}
}
void main() {
// Eratoshenes();
// noRepeat();
// func_score();
f("cccdddcc");
}
程序在vc6.0下调试通过.
兄弟实在想帮你
可是你的问题实在太多了
我告诉你个在百度求答案的办法吧
你把问题分开来问,这样回答的人也多
这么多问题别人一看就头大了
2.有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留
下的是原来第几号的那位。
#include
#include
#define Namelength 10
typedef struct CLNode{
char*name;
int ID;
int pastword;
struct CLNode *next;
}child,*ptrchild;
ptrchild CreateCList(int n)
{int i;
ptrchild p,head,rear;
printf("please input the children information:");
rear=head=(ptrchild)malloc(sizeof(child));
rear->next=head;
for(i=0;i
p=(ptrchild)malloc(sizeof(child));
p->ID=i+1;
p->name=(char*)malloc(Namelength*sizeof(char));
gets(p->name);
scanf("%d",&(p->pastword));
rear->next=p;
rear=p;
}
rear->next=head;
return head;
}
Joshpus(ptrchild head,int m)
{ptrchild p,q;int i=0;
p=head;
while(head->next!=head)
{while(i
p=p->next;
if(p==head){q=head;p=p->next;}
i++;
}
printf("\nID:%d Name:%s",p->ID,p->name);
q->next=p->next;
m=p->pastword;
i=0;
free(p);
p=q;
}
printf("\n");
}
main()
{ptrchild CL;
int n,m;
printf("please input the number of children:");
scanf("%d",&n);
CL=CreateCList(n);
printf("please input the initial value of m:");
scanf("%d",&m);
Joshpus(CL,3);
}
3、用一维数组解如下问题:读取20个在10到100之间的不重复的整数。每读取一个值时,如果它与已读取
的值不重复,就打印该值。用尽可能小的数组解决这个问题。
main()
{int a[20],i,j,k=0,element;
while(k<20)
{scanf("%d",&element);
for(i=0;i
if(i==k){a[k]=element;k++;printf("%d ",element);}
}
}
4、编程将由‘0’~‘9’组成的数字字符串转换为数。例如输入“12345”,输出12345
main()
{char string[20];
char* chr;
int a[20],i=0,n;
gets(string);
chr=string;
while(chr)
{a[i++]=*chr-48;
chr++;
}
n=i;
for(i=0;i
}
5、Eratoshenes筛选是一种寻找素数的方法,该方法表述如下:
1)创建一个一维数组,把所有的元素初始化为1(表示真),下标为素数的元素保持1不变,其它下标的
元素最终被置为0
2)从数组下标2出发,每次发现值为1的数组元素时,则看其后的所有元素,把下标是它们倍数的那些元
素置为0。例如,对下标2来说,凡是2的倍数的下标(4,6,8,10,···)都将其元素置为0,对下标3
来说,凡是否的倍数的下标(6,9,12,15,···)将其元素置为0。
当以上过程结束后,仍为1的数组元素的下标就是素数,将这些下标打印输出即可。编写程序,用含有
1000个元素的数组确定并打印出1~999之间的所有素数
main()
{int a[1000],i,j;
for(i=0;i<1000;i++)
a[i]=1;
for(i=2;i<1000;i++)
for(j=i+1;j<1000;j++)
if(a[j]&&j%i==0)a[j]=0;
printf("所有的素数为:\n");
for(i=2;i<1000;i++)
if(a[i])printf("%d ",i);
}
8、已知一个有限输入字符集合?={a,b},写一个程序能够识别集合L={anbn:0≤n≤N}。
#define N 10
#include
main()
{char string[50];
int length,i;
int flag=1;
printf("请输入字符串:");
gets(string);
length=strlen(string);
if(length%2)printf("不符合形式!");
else
{for(i=0;i
if(!flag)printf("不符合形式!");
else
{for(i=length/2;i
if(!flag)printf("不符合形式!");
else printf("符合这种形式");
}
}
}
题目1:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后
此元素之后的数,依次后移一个位置。
2.程序源代码:
main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int temp1,temp2,number,end,i,j;
printf("original array is:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("insert a new number:");
scanf("%d",&number);
end=a[9];
if(number>end)
a[10]=number;
else
{for(i=0;i<10;i++)
{ if(a[i]>number)
{temp1=a[i];
a[i]=number;
for(j=i+1;j<11;j++)
{temp2=a[j];
a[j]=temp1;
temp1=temp2;
}
break;
}
}
}
for(i=0;i<11;i++)
printf("%6d",a[i]);
}
第二题
#define nmax 50
main()
{
int i,k,m,n,num[nmax],*p;
printf("please input the total of numbers:");
scanf("%d",&n);
p=num;
for(i=0;i
i=0;
k=0;
m=0;
while(m
if(*(p+i)!=0) k++;
if(k==3)
{ *(p+i)=0;
k=0;
m++;
}
i++;
if(i==n) i=0;
}
while(*p==0) p++;
printf("%d is left\n",*p);
}
其他的有空找我...累
jhvgv