数据结构第一节作业
配合实验一对同学们C语言编程基本能力评测
请同学们从9个题目中任意选择题目编程实现,编程实现题目数量请尽量多!
1、输入三个整数x,y,z,请编程把这三个数由小到大输出。
2、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21…
3、编程实现从键盘上输入10个整数,对输入的10个整数进行排序并输出。
4、输入一个十进制整数,输出与其相等的二进制形式。将二进制保存在一个数组中,然后按相反的顺序输出。
5、编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述统计结果。
6、青年歌手参加歌曲大奖赛,有10个评委打分,试编程求选手的平均得分(去掉一个最高分和一个最低分)。
7、已知数组a中的元素已按由小到大顺序排列,编程实现将输入的一个数插入数组a中,插入后,数组a中的元素仍然由小到大顺序排列。
8、自定义一个结构体为“Student”数据类型,包含学号、姓名、年龄等信息,试建立一个有三个结点的简单链表。
9、编写函数countpi,利用公式
如何插入一段漂亮的代码片
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <list>
using namespace std;
int test1();
int test2(int init);
int test3(int thArray[]);
int test4(int init);
int test5();
int test6();
int test7();
void test8();
int test9();
struct Student
{
char name[100];
int age;
int num;
struct Student*next;
};
int main(int argc, char** argv) {
printf("1、输入三个整数x,y,z,请编程把这三个数由小到大输出。\n");
test1();
printf("2、输入兔子个数 \n");
int num;
scanf("%d",&num);
printf("%d \n",test2(num));
printf("3、编程实现从键盘上输入10个整数,对输入的10个整数进行排序并输出。 \n");
int thArray[10];
for(int i=0;i<10;i++){
scanf("%d",&thArray[i]);
}
test3(thArray);
printf("4输入一个十进制整数,输出与其相等的二进制形式。将二进制保存在一个数组中,然后按相反的顺序输出。\n");
int de;
scanf("%d",&de);
test4(de);
printf("5、由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述统计结果。\n");
test5();
printf("6、青年歌手参加歌曲大奖赛,有10个评委打分,试编程求选手的平均得分(去掉一个最高分和一个最低分)。\n");
test6();
printf("7、已知数组a中的元素已按由小到大顺序排列,编程实现将输入的一个数插入数组a中,插入后,数组a中的元素仍然由小到大顺序排列。\n");
test7();
printf("8------------------\n");
test8();
printf("9------------------\n");
test9();
return 0;
}
int test1(){
int a ,b ,c;
scanf("%d %d %d",&a,&b,&c);
if(a>b){
int t;
t=a;
a=b;
b=t;
}
if(a>c){
int t;
t=a;
a=c;
c=t;
}
if(b>c){
int t;
t=b;
b=c;
c=t;
}
printf("%d %d %d \n",a,b,c);
return 0;
}
int test2(int init){
if (init == 1 || init == 2)
{
return 1;
}
else
{
return test2(init - 1) + test2(init - 2);
}
return 0;
}
int test3(int thArray[]){
int length =10;
for(int i=0;i<length;i++){
for(int j=0;j<length;j++){
if(thArray[i]>thArray[j]){
int temp=thArray[j];
thArray[j]=thArray[i];
thArray[i]=temp;
}
}
}
for (int i = 0; i<10; i++){
printf("%d \t", thArray[i]);
}
printf("\n");
return 0;
}
int test4(int init){
std::list<int> mylist;
int i=0,n=0;
while(init!=0){
mylist.push_front(init%2);
init=init/2;
i++;
}
int binArray [i];
while(!mylist.empty()){
binArray[n]=mylist.front();
mylist.pop_front();
n++;
}
printf("进制转换结果");
for(int z=0;z<i;z++){
printf("%d",binArray[z]);
}
printf("\n");
for(int z=i-1;z>-1;z--){
printf("%d",binArray[z]);
}
printf("\n");
}
int test5(){
char n[200];
fflush(stdin);
gets(n);
printf("(%s)的长度是 (%d) \n", n, strlen(n));
return 0;
}
int test6(){
float score [10];
for(int i=0;i<10;i++){
scanf("%f",&score[i]);
}
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
if(score[i]>score[j]){
int temp=score[j];
score[j]=score[i];
score[i]=temp;
}
}
}
float sum=0;
for(int i=1;i<9;i++){
sum+=score[i];
}
printf("去掉一个最高分和一个最低分平均分为: %f \n",sum/8);
return 0;
}
int test7(){
int array1[]={10,12,14,16,18,19,20,22,30};
int a;
int flag=9;
scanf("%d",&a);
int array2[10];
for(int i=0;i<9;i++){
if(a>array1[i]){
array2[i]=array1[i];
}else{
array2[i]=a;
flag= i+1;
break;
}
}
if(flag<9){
for(int i= flag; i<10;i++){
array2[i]=array1[i-1];
}
}else{
array2[flag]=a;
}
for(int i=0 ;i<10;i++){
printf("%d \t",array2[i]);
}
}
void test8(){
struct Student a, b, c, *head, *p;
strcpy(a.name,"a");
a.age=20;
a.num=1001;
strcpy(b.name,"b");
b.age=22;
b.num=1002;
strcpy(c.name,"c");
c.age=21;
c.num=1003;
head=&a;
a.next = &b;
b.next = &c;
c.next = NULL;
p = head;
do{
printf("name=%s num=%ld age=%d\n",p->name, p->num, p->age);
p = p->next;
} while (p != NULL);
}
int test9(){
float s=1.0, n=1.0 , t=1.0 , pi=0 ;
while(t>1e-5){
pi = pi + t;
n =n+2;
t=t*(s/n);
s++;
printf("%f \n",t);
}
printf("结束");
pi=pi*2;
printf("%0.5f",pi);
FILE *fpWrite=fopen("p7_3.out.txt","w");
fprintf(fpWrite,"%f",pi);
fclose(fpWrite);
return 0;
}
gets()函数 ,用gets()替代scanf(); gets可以无限读取字符串,不会判断上限,以回车结束读取。其用法为gets(s),其中s为字符串变量(字符串数组名或字符串指针)。简单的理解就是读入一串字符(遇到回车结束),存到s中。
scanf(“%[^\n]”,str) ,遇到"\n"结束 '^'含有非的意思 “%[^\n]“即遇到\n结束。
scanf的时候,会遗留一个’\n’在缓冲区里, 因此,gets()误将这个回车作为了它的输入。 应在gets函数之前使用,fflush(stdin);清空默认缓冲区
|