现代城市学院程序设计II上机答案

更新时间:2024-05-29 07:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

现代城市学院程序设计II上机答案

7.1

/*程序填空,不要改变与输入输出有关的语句。 输入2个正整数 m 和 n (1<=m<=6, 1<=n<=6),

然后输入矩阵 a(m 行 n 列)中的元素,分别求出各行元素之和,并输出。 输出使用语句:printf(\输入输出示例:括号内为说明 输入: 3 2 (m=3,n=2) 6 3 1 -8 3 12 输出:

sum of row 0 is 9 sum of row 1 is -7 sum of row 2 is 15 */

#include int main(void) {

int i, j, m, n, sum; int a[6][6];

scanf(\ for(i = 0; i < m; i++) for(j = 0; j < n; j++)

scanf(\ for(i = 0; i < m; i++){ sum=0;

for(j = 0; j < n; j++) sum=sum+a[i][j]; printf(\ }

/*---------*/ return 0; }

/*程序填空,不要改变与输入输出有关的语句。 输入两个正整数 m 和 n (m≥1,n≤6),

然后输入该m 行 n 列二维数组a中的元素, 将该二维数组a中的每个元素向右移一列,

最后一列换到第一列,移动后的数组存到另一二维数组b中,按矩阵形式输出b。 输入输出示例:括号内为说明 输入:

2 3 (m=2, n=3) 4 5 6 1 2 3 输出: New array: 6 4 5 3 1 2 */

#include int main(void) {

int a[6][6], b[6][6], i, j, m, n;

scanf(\

for(i = 0; i < m; i++) for(j = 0; j < n; j++)

scanf(\ for(i = 0; i < m; i++) b[i][0]=a[i][n-1]; for(i = 0; i < m; i++) for(j = 0; j < n-1; j++) b[i][j+1]=a[i][j];

/*---------*/

printf(\ for( i = 0; i < m; i++) { for( j = 0; j < n; j++)

printf(\ printf(\ }

return 0; }

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数 repeat (0

计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。 副对角线为从矩阵的右上角至左下角的连线。 输入输出示例:括号内为说明 输入:

1 (repeat=1) 4 (n=4) 2 3 4 1 5 6 1 1 7 1 8 1

1 1 1 1 输出:

sum = 35 (2+3+4+5+6+7+8=35) */

#include int main(void) {

int i, j, n, sum; int repeat, ri; int a[6][6];

scanf(\

for(ri = 1; ri <= repeat; ri++){ scanf(\ for(i = 0; i < n; i++) for(j = 0; j < n; j++)

scanf(\ sum=0; for(i = 0; i < n-1; i++) for(j = 0; j < n-1; j++) if(i+j!=n-1) sum=sum+a[i][j]; /*---------*/

printf(\ }

return 0; }

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数 repeat (0

提示:将乘数、被乘数和乘积放入一个二维数组中,再输出该数组。 输入输出示例:括号内为说明 输入:

1 (repeat=1) 3 (n=3) 输出:

* 1 2 3 1 1 2 2 4 3 3 6 9 */

#include int main(void) {

int i, j, n;

int a[10][10]; int repeat, ri;

scanf(\

for(ri = 1; ri <= repeat; ri++){ scanf(\/*---------*/ for(i = 0; i <= n; i++) for(j = 0; j <= n; j++) a[i][j]=i*j; for(i = 0; i <= n; i++) a[i][0]=i; for(j = 0; j <= n; j++) a[0][j]=j; for(i = 0; i <= n; i++){ for(j = 0; j <= n; j++)

if(i == 0 && j == 0) printf(\ else if(i == 0 || j <= i) printf(\ printf(\ } }

return 0; } /*

程序填空,不要改变与输入输出有关的语句。

输入一个正整数 repeat (0

上三角矩阵指主对角线以下的元素都为0的矩阵, 主对角线为从矩阵的左上角至右下角的连线。

输入输出示例:括号内为说明 输入:

2 (repeat=2) 3 (n=3) 1 2 3 0 4 5 0 0 6 2 (n=2) 1 0 -8 2 输出: YES

NO */

#include int main(void) {

int flag, i, j, n; int a[6][6]; int repeat, ri;

scanf(\

for(ri = 1; ri <= repeat; ri++){ scanf(\ for(i = 0; i < n; i++) for(j = 0; j < n; j++)

scanf(\/*---------*/ flag=1; for(i = 0; i < n; i++) for(j = 0; j < i; j++) if(a[i][j]!=0) flag=0;

if(flag != 0) printf(\ else printf(\ }

return 0; } /*

程序填空,不要改变与输入输出有关的语句。

输入一个正整数 repeat (0

2 (repeat=2)

1981 3 1 (1981年3月1日) 2000 3 1 (2000年3月1日) 输出:

Days of year: 60 (1981年3月1日是该年的第60天) Days of year: 61 (2000年3月1日是该年的第61天) */

#include int main(void)

{

int day, day_year, month, year; int repeat, ri;

int day_of_year(int year, int month, int day);

scanf(\

for(ri = 1; ri <= repeat; ri++){

scanf(\/*---------*/day_year=day_of_year(year, month, day); printf(\ }

return 0; }

int day_of_year(int year, int month, int day) { int i,days=0; int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31}; if(year@0==0||year%4==0&&year0!=0) days++; for(i=0;i

/*程序填空,不要改变与输入输出有关的语句。

下面是一个特殊的5阶方阵。输入1个正整数n(n≤6),输出如此形式的n阶的方阵(顺时针方向旋进)。

1 2 3 4 5 16 0 0 0 6 15 0 0 0 7 14 0 0 0 8 13 12 11 10 9 输入输出示例:括号内为说明 输入: 5 (n=5) 输出:

1 2 3 4 5 16 0 0 0 6 15 0 0 0 7 14 0 0 0 8 13 12 11 10 9 */

#include

int main(void) { int a[10][10], i, j, n, k=0; scanf(\ for(i=0; i=0; j--) { k++; a[n-1][j]=k; } for(i=n-2; i>0; i--) { k++; a[i][0]=k; } for(i=0; i

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数 repeat (0

就输出其下标, 否则,输出\。鞍点的元素值在该行上最大, 在该列上最小。 输入输出示例:括号内为说明 输入:

2 (repeat=2) 4 (n=4)

1 7 4 1 4 8 3 6 1 6 1 2 0 7 8 9 2 (n=2) 1 7 4 1 输出: a[2][1] = 6 NO */

#include \int main(void) {

int flag, i, j, k, row, col, n; int a[6][6]; int repeat, ri;

scanf(\

for(ri = 1; ri <= repeat; ri++){ scanf(\ for(i = 0; i < n; i++) for(j = 0; j < n; j++)

scanf(\ row = col =0; for(row = 0; row < n; row++) { for(col = 0; col < n; col++) { flag = 1; for(j = 0; j < n; j++) { if(a[row][j] > a[row][col]) { flag = 0; break; } } for(i = 0; i < n; i++) { if(a[i][col] < a[row][col]) { flag = 0; break;

} } if(flag == 1) { break; } } if(flag == 1) { break; } } /*---------*/

if(flag != 0)

printf(\ else

printf(\ }

return 0; } 7.3

/*程序填空,不要改变与输入输出有关的语句。

输入一个以回车结束的字符串(少于80个字符),将它的内容逆序输出。如\的逆序为\。

输入输出示例:括号内为说明 输入:

Welcome to you! 输出:

!uoy ot emocleW */

#include int main(void) {

int i, k, temp; char str[80];

i = 0;

while((str[i] = getchar( )) != '\\n') i++; str[i] = 0; k=i-1; i=0; while(i

str[i]=str[k]; str[k]=temp; k--; i++; }

/*---------*/

for(i = 0; str[i] != 0; i++) putchar(str[i]); return 0; }

/*程序填空,不要改变与输入输出有关的语句。

输入一个以回车结束的字符串(少于80个字符),把字符串中的所有数字字符('0' ~'9')转换为整数,去掉其他字符。例如,字符串“3a56bc”转换为整数后是356。输入输出示例:括号内为说明 输入: free82jeep5 输出: 825 */

#include int main(void) {

int i, s;

char str[80]; i = 0;

while((str[i] = getchar( )) != '\\n') i++; str[i] = '\\0'; s=0;

for(i = 0;str[i]!='\\0'; i++)

if(str[i] <= '9' && str[i] >= '0') s = s * 10 + (str[i]-'0');

/*---------*/

printf(\ return 0; }

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0

输入一个字符,再输入一个以回车结束的字符串(少于80个字符), 在字符串中查找该字符,如果找到,

输出该字符在字符串中所对应的最大下标 (下标从0开始);否则输出\。 输入输出示例:括号内为说明 输入:

{ ch=str[j]; } if(ch!=str[i]) { str[j]=str[i]; str[i]=ch; } } } for(i=0;str[i]!='\\0';i++) { for(j=k=i+1;str[j]!='\\0';j++) if(str[j]!=str[i]) str[k++]=str[j]; str[k]='\\0'; }

/*---------*/ for(i = 0; str[i] != '\\0'; i++) putchar(str[i]); putchar('\\n'); return 0; } 8.1

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数 repeat (0

输入两个整型变量x和y,并通过指针运算找出两个数中的最大值,输出到屏幕上。 输入输出示例:括号内为说明 输入:

3 5 ( x=3, y=5) 输出: max = 5 */

#include int main(void) { int max, x, y, *pmax, *px, *py; scanf(\ px=&x; py=&y; pmax=&max;

if(*px>*py) *pmax=*px; else *pmax=*py; /*---------*/ printf(\ return 0; }

/*程序填空,不要改变与输入输出有关的语句。

输入两个正整数 n 和 m (1

将这些数排成一行,向右循环移动 m 个位置(从右边移出的数再从左边移入), 最后输出移动后的n个整数。

要求定义并调用函数 mov(x,n,m) 实现上述循环移动的功能,

函数形参x的类型是整型指针,形参n和m的类型是int,函数的类型是void。 输入输出示例:括号内为说明 输入:

5 3 (n=5,m=3) 1 2 3 4 5 (5个整数) 输出:

After moved: 3 4 5 1 2 */

#include

void mov(int *x, int n, int m); int main(void) {

int i, m, n; int a[80];

scanf(\ for(i = 0; i < n; i++) scanf(\ mov(a, n, m); /*---------*/

printf(\ for(i = 0; i < n; i++) printf(\ printf(\ return 0; }

void mov(int *x, int n, int m) { int i,item,j; for(i=0;i

{ item=x[n-1]; for(j=n-1;j>=0;j--) x[j+1]=x[j]; x[0]=item; } }

/*程序填空,不要改变与输入输出有关的语句。

输入两个实数 a 和 b,要求定义并调用函数 sum_diff(float op1,float op2,float *psum,float *pdiff)

实现计算a、b两数的和与差(结果保留两位小数),其中op1和op2是输入的两个实数,*psum和*pdiff

是计算得出的和与差,且该函数的类型是void。自定义main函数,并在其中调用sum_diff函数。

输入输出示例:括号内为说明 输入:

3 (repeat=3) 4 6 -2 -4 0.75 0.25 输出:

The sum is 10.00 The diff is -2.00 The sum is -6.00 The diff is 2.00 The sum is 1.00 The diff is 0.50 */

#include

void sum_diff(float op1,float op2,float *psum,float *pdiff); int main(void) {

float a,b,sum,diff; int ri,repeat;

scanf(\

for(ri = 1; ri <=repeat; ri++){ scanf(\ sum_diff(a,b,&sum,&diff); /*---------*/

printf(\ } return 0;

}

void sum_diff(float op1,float op2,float *psum,float *pdiff) { *psum=op1+op2; *pdiff=op1-op2; }

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数 repeat (0

要求定义并调用函数 sort(a,n),它的功能是采用选择排序算法,将数组 a 的前 n 个元素按从小到大的顺序排序,函数形参 a 的类型是整型指针,形参n的类型是int,函数的类型是void。

输入输出示例:括号内为说明 输入

3 (repeat=3) 4 (n=4) 5 1 7 6

3 (n=3) 1 2 3

5 (n=5) 5 4 3 2 1 输出

After sorted the array is: 1 5 6 7 After sorted the array is: 1 2 3 After sorted the array is: 1 2 3 4 5 */

#include void sort(int a[],int n); int main(void) {

int i, n;

int repeat, ri; int a[10];

scanf(\

for(ri = 1; ri <= repeat; ri++){ scanf(\ for(i = 0; i < n; i++) scanf(\ sort(a,n); /*---------*/

printf(\ for(i = 0; i < n; i++)

printf(\ printf(\ }

return 0; }

void sort(int a[],int n) { int i,k,index,temp; for(k=0;k

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0

要求定义并调用函数search(list, n, x),它的功能是在数组list中查找元素x,若找到则返回相应元素的最小下标,否则返回-1,函数形参 list 的类型是整型指针,形参n和x的类型是int,函数的类型是void。 输入输出示例:括号内为说明 输入

2 (repeat=2) 3 (n=3) 1 2 -6

2 (x=2) 5 (n=5) 1 2 2 5 4

0 (x=0) 输出 index = 1 Not found */

#include int main(void) {

int i, index, n, res, x;

int repeat, ri; int a[10];

int search(int list[], int n, int x);

scanf(\

for(ri = 1; ri <= repeat; ri++){ scanf(\ for(i = 0; i < n; i++) scanf(\ scanf(\/*---------*/ res=search(a,n, x); if(res != -1)

printf(\ else

printf(\ }

return 0; }

int search(int list[], int n, int x) { int index; int i; for(i=0;i

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数 n (1

下一个人从 1 开始重新报数,报到3的人退出圈子。

如此循环,直到留下最后一个人。请问留下来的人的编号。 提示:将每个人的编号存入数组,从第一个人开始报数,

依次将报到3的人的编号清除为0,重复这样的操作直至只剩下一个不为0的数,该数就是最后一个人的编号。

输出使用语句:printf(\输入输出示例:括号内为说明

输入:

5 (n个人报数,n=5) 输出:

Last No is: 4 (最后一个人的编号是4) */

#include int main(void) {

int count, i, n, no; int num[50]; int *p;

scanf(\ for(i = 0; i < n; i++) num[i] = i + 1; p = num; i=0; no = 0; count = n; while(count>1) { if(num[i]!=0) no++; if(no==3) { num[i]=0; count--; no=0; } i=i++ ; i=i%n; } /*---------*/ p = num;

while(*p == 0) p++;

printf(\ return 0; } 8.2

/*程序填空,不要改变与输入输出有关的语句。 输入5个字符串,输出其中最小的字符串。 输入输出示例:括号内为说明 输入: Li Wang

Zha Jin Xian 输出: Min is: Jin */

#include #include int main(void) {

char min[80], str[80]; int i;

scanf(\ strcpy(min,str); for(i=0;i<4;i++) { scanf(\ if(strcmp(min,str)==1) strcpy(min,str); }

/*---------*/

printf(\ return 0; }

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数 repeat (0

编写一个程序,在主函数中输入两个字符串s和t,调用函数strc完成字符串的连接。 函数strc的作用是将字串s连接到字串t的尾部。 输入输出示例:

输入: Birthday Happy 输出:

HappyBirthday */

#include

void strc(char *s, char *t); int main(void) { char s[80],t[80]; gets(s);

gets(t); strc(s,t); puts(t); return 0; }

void strc(char *s, char *t) { while(*t!='\\0') *t++; while(*s!='\\0') *t++=*s++; *t='\\0'; }

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数 repeat (0

2 (repeat=2) li wang zhang jin xian

red blue green yellow purple 输出:

The longest is: zhang The longest is: yellow */

#include #include int main(void) {

char sx[80], longest[80]; int i;

int repeat, ri;

scanf(\

for(ri = 1; ri <= repeat; ri++){ scanf(\ strcpy(longest,sx); for(i=0;i<4;i++) { scanf(\ if(strlen(longest)

} printf(\ }

/*---------*/ return 0; }

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数 repeat (0

输入一个字符串 t 和一个正整数 m,将字符串 t 中从第 m 个字符开始的全部字符复制到字符串 s 中,再输出字符串 s。

要求定义并调用函数 strmcpy(s,t,m), 它的功能是将字符串 t 中从第 m 个字符开始的全部字符复制到字符串 s 中,函数形参s和t的类型是字符指针,形参m的类型是int,函数类型是void。

输入输出示例:括号内为说明 输入:

3 (repeat=3) happy new year 7 happy 1 new 4

输出:

Output is: new year (从\new year\第7个字符开始组成的新字符串为\year\)

Output is: happy (从\第1个字符开始组成的新字符串为\) error input (\的长度小于4) */

#include #include int main(void) {

char s[80], t[80]; int m;

int repeat, ri;

void strmcpy(char *s,char *t, int m);

scanf(\ getchar();

for(ri = 1; ri <= repeat; ri++){ gets(t);

scanf(\ getchar();

if(strlen(t) < m)

printf(\ else{

/*---------*/strmcpy(s,t,m);

printf(\ } }

return 0; }

void strmcpy(char *s,char *t, int m) { int i; for(i=1;i

/*程序填空,不要改变与输入输出有关的语句。

输入一行字符(不超过80个),统计其中的大写字母、小写字母、空格、数字以及其他字符的个数。

输入输出示例: 输入:

bFaE3+8 =1R 输出:

大写字母数为: 3 小写字母数为: 2 空格为: 1 数字为: 3 其他字符为: 2 */

#include int main(void) {

char s[80]; char *p;

int blank, digit, lower, other, upper;

gets(s);

upper = lower = blank = digit = other = 0; p=s; while(*p!='\\0') { if(*p>='A'&&*p<='Z') upper++;

else if(*p>='a'&&*p<='z') lower++; else if(*p==' ') blank++; else if(*p>='0'&&*p<='9') digit++; else other++; *p++; }

/*---------*/ printf(\大写字母数为: %d\\n小写字母数为: %d\\n空格为: %d\\n数字为: %d\\n其他字符为: %d\\n\ return 0; }

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数 repeat (0

输入一个字符串 str,再输入一个字符 c,将字符串 str 中出现的所有字符 c 删除。

要求定义并调用函数delchar(str,c), 它的功能是将字符串 str 中出现的所有 c 字符删除,函数形参str的类型是字符指针,形参c的类型是char,函数类型是void。 输入输出示例:括号内为说明 输入

3 (repeat=3)

happy new year (字符串\a (待删除的字符'a') bee (字符串\e (待删除的字符'e') 111211 (字符串\1 (待删除的字符'1') 输出

After deleted, the string is: hppy new yer (字符串\中的字符'a'都被删除) After deleted, the string is: b (字符串\中的字符'e'都被删除) After deleted, the string is: 2 (字符串\中的字符'1'都被删除) */

#include int main(void) {

char c;

char str[80]; int repeat, ri;

void delchar(char *str, char c);

scanf(\ getchar();

for(ri = 1; ri <= repeat; ri++){ gets(str);

scanf(\ getchar(); /*---------*/ delchar(str, c);

printf(\ }

return 0; }

void delchar(char *str, char c) { int i=0,j; while(str[i]!='\\0') { if(str[i]!=c) i++; else { for(j=i;str[j]!='\\0';j++) str[j]=str[j+1]; str[j]='\\0'; } } }

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数 repeat (0

输入一个字符串(长度不超过80),判断该字符串是否为“回文”。“回文”是指顺读和倒读都一样的字符串,如“XYZYX”和“xyzzyx”。

要求定义并调用函数 mirror(p)判断字符串 p 是否为“回文”,如果 p 是回文字符串,返回1,否则,返回0,函数形参 p 的类型是字符指针,函数类型是 int。 输入输出示例:括号内为说明 输入:

2 (repeat=2) abcddcba abcddcb 输出: YES NO */

#include int main(void) {

char s[80];

int repeat, ri;

int mirror(char *p);

scanf(\ getchar();

for(ri = 1; ri <= repeat; ri++){ gets(s);

if(mirror(s) != 0) printf(\ else

printf(\ }

return 0; }

int mirror(char *p) { int n=0,i; while(p[n]!='\\0') n++; n--; for(i=0;i

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数n(3≤n≤10),再输入n个雇员的信息,包括姓名、基本工资、浮动工资和支出

,输出每人的姓名和实发工资,实发工资=基本工资+浮动工资-支出。 输入输出示例:括号内为说明 输入: 3 (n=3) zhao 240 400 75 qian 360 120 50 zhou 560 150 80 输出:

zhao 实发数:565.00 qian 实发数:430.00 zhou 实发数:630.00 */

#include int main (void ) {

struct emp{

char name[10]; float jbgz; float fdgz; float zc; };

struct emp s[10]; int i, n;

scanf(\/*---------*/ for(i=0;i

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数 n(3

输出总分最高学生的姓名和总分。 输入输出示例:括号内为说明 输入: 5 (n=5)

1 黄岚 78 83 75 2 王海 76 80 77 3 沈强 87 83 76 4 张枫 92 88 78 5 章盟 80 82 75 输出:

总分最高的学生是: 张枫,258分 */

#include int main (void) {

int i, j, k, max_index, n; struct student{ int number; char name[20]; int score[3]; int sum;

}stu[10];

scanf(\ for(i=0;istu[max_index].sum) max_index=i; }

/*---------*/

printf(\总分最高的学生是: %s,%d分\\n\ return 0; }

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数 repeat (0

以h:m:s的格式输出该时间再过 n 秒后的时间值(超过 24 时从 0 时重新开始计时)。 输入输出示例:括号内为说明 输入:

3 (repeat=3) 0:0:1

59 (秒数n=59) 11:59:40

30 (秒数n=30) 23:59:40

30 (秒数n=30) 输出: 0:1:0 (0:0:01加上59秒的新时间) 12:0:10 (11:59:40加上30秒的新时间) 0:0:10 (23:59:40加上30秒的新时间) */

#include int main(void)

{

int n;

int repeat, ri; struct time{

int hour, minute, second; }time;

scanf(\

for(ri = 1; ri <= repeat; ri++){

scanf(\ scanf(\ time.second=time.second+n600; n=n/60; time.minute=time.minute+n`+time.second/60; n/60; time.hour=time.hour+n+time.minute/60; time.second=time.second`; time.minute=time.minute`; time.hour=time.hour$; /*---------*/

printf(\ }

return 0; }

/*程序填空,不要改变与输入输出有关的语句。 输入整数n(n<10),再输入n个学生的基本信息,

包括序号、姓名和成绩,要求计算并输出他们的平均成绩(保留2位小数)。 输入输出示例:括号内为说明 输入: 3 (n=3) 1 zhang 70 2 wang 80 3 qian 90 输出: 80.00 */

#include int main(void) {

int i, n;

double average, sum; struct student{ int num;

char name[10];

int score; }s[10];

scanf(\ for(i=0;i

printf(\ return 0; }

/*程序填空,不要改变与输入输出有关的语句。 输入4个整数a1、a2、b1、b2,分别表示两个复数的实部与虚部,求两个复数之积(a1+a2i)*(b1+b2i),乘积的实部为:a1*b1-a2*b2,虚部为:a1*b2+a2*b1。 输入输出示例:括号内为说明 输入: 3 4 5 6 输出:

(3+4i) * (5+6i) = -9 + 38i */

#include int main(void) {

struct complex{ int real; int imag; }product, x, y;

scanf(\ product.real=x.real*y.real-x.imag*y.imag; product.imag=x.real*y.imag+x.imag*y.real;

/*--(a1+a2i)*(b1+b2i),乘积的实部为:a1*b1-a2*b2,虚部为:a1*b2+a2*b1-------*/ printf(\* (%d+%di) = %d + %di\\n\x.real, x.imag, y.real, y.imag, product.real, product.imag); return 0; }

/*程序填空,不要改变与输入输出有关的语句。 编写程序,从键盘输入 n (n<10)本书的名称和定价并存入结构数组中,查找并输出其中定价最高和最低的书的名称和定价。 输入输出示例:括号内为说明 输入:

3 (n=3)

C程序设计 21.5 VB程序设计 18.5 Delphi程序设计 25.0 输出:

价格最高的书: Delphi程序设计,价格: 25.0 价格最低的书: VB程序设计,价格: 18.5 */

#include int main (void) {

int i, max_index, min_index, n; double x; struct book{

char name[50]; double price; }book[10];

scanf(\ getchar();

for(i = 0; i < n; i++){

scanf(\ scanf(\ getchar();

book[i].price = x; } max_index= min_index=0; for(i=1;ibook[max_index].price) max_index=i; if(book[i].price

/*---------*/

printf(\价格最高的书: %s,价格: %.1f\\n\ printf(\价格最低的书: %s,价格: %.1f\\n\ return 0; }

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数 repeat (0

编写程序,输入一个日期(年、月、日),计算并输出该日是该年中的第几天。 要求定义并调用函数 day_of_year(p) 计算某日是该年的第几天,

函数形参p的类型是结构指针,指向表示日期的结构变量,函数类型是int,注意区分闰年。

输入输出示例:括号内为说明 输入:

2 (repeat=2) 2006 3 5 2000 3 5 输出:

64 (2006年3月5日是该年的第64天) 65 (2000年3月5日是该年的第65天) */

#include struct date{ int year; int month; int day; };

int day_of_year(struct date *p);

int main(void) {

int yearday; int repeat, ri; struct date date;

scanf(\

for(ri = 1; ri <= repeat; ri++){

scanf(\/*---------*/yearday=day_of_year(&date); printf(\ }

return 0; }

int day_of_year(struct date *p) { int i,result=0; int month[12]={31,28,31,30,31,30,31,31,30,31,30,31}; //int month2[12]={31,29,31,30,31,30,31,31,30,31,30,31}; for(i=0;imonth-1;i++) result=result+month[i]; if(p->year@0==0||p->year%4==0&&p->year0!=0) result++; result=result+p->day; return result; }

/*程序填空,不要改变与输入输出有关的语句。

通讯录的结构记录包括: 姓名、生日、电话号码,

其中生日又包括三项:年、月、日。 定义一个嵌套的结构类型, 输入n(n<10)个联系人的信息,

再按他们的年龄从大到小的顺序依次输出其信息。 输入输出示例:括号内为说明 输入: 3 (n=3)

zhang 1985 04 03 13912345678 wang 1982 10 20 0571-88018448 qian 1984 06 19 13609876543 输出:

wang 1982/10/20 0571-88018448 qian 1984/6/19 13609876543 zhang 1985/4/3 13912345678 */

#include struct date{ int y, m ,d ; };

struct friends_list{

char name[10]; struct date birthday; char phone[15]; };

int main(void) { int i, n; struct friends_list friends[10]; void sort(struct friends_list s[], int n); scanf(\ for(i=0; i

void sort(struct friends_list s[], int n)

{ int i,j,index; struct friends_list b; /*for(i=0;is[j].birthday.y) index=j; else

if((s[index].birthday.y==s[j].birthday.y)&&(s[index].birthday.m>s[j].birthday.m)) index=j; else

if((s[index].birthday.y==s[j].birthday.y)&&(s[index].birthday.m==s[j].birthday.m)&&(s[index].birthday.d>s[j].birthday.d)) index=j; } b=s[i]; s[i]=s[index]; s[index]=b; }

/* if(index==n-1) b[i]=s[i-1]; else b[i]=s[i]; for(i=0;i

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0

输入一个整数n (n>=0)和一个双精度浮点数x,输出函数P(n,x)的值(保留2位小数)。 [1 (n=0)

P(n, x) = [x (n=1) [((2n-1)*P(n-1,x)-(n-1)*P(n-2,x))/n (n>1) 例:括号内是说明 输入

3 (repeat=3) 0 0.9 (n=0,x=0.9) 1 -9.8 (n=1,x=-9.8) 10 1.7 (n=10,x=1.7) 输出

P(0, 0.90)=1.00 P(1, -9.80)=-9.80 P(10, 1.70)=3.05 */

#include

double P(int n, double x); int main(void) {

int repeat, ri; int n;

double x, result;

scanf(\

for(ri = 1; ri <= repeat; ri++) {

scanf(\ result = P(n, x);

printf(\ }

return 0; }

double P(int n, double x) { if(n==0) { return 1; } if(n==1) { return x; } if(n>1) { return ((2*n-1)*P(n-1,x)-(n-1)*P(n-2,x))/n; }

}

/*程序填空,不要改变与输入输出有关的语句。 编写一个函数,利用参数传入一个3位数number, 找出101~number之间所有满足下列两个条件的数: 它是完全平方数,又有两位数字相同,

如144、676等,函数返回找出这样的数据的个数。请同时编写主函数。 例:(括号内为说明) 输入

3 (repeat=3) 150 500 999 输出 count=2 count=6 count=8 */

#include #include int search(int n); int main(void) { int number,ri,repeat; scanf(\ for(ri=1;ri<=repeat;ri++){ do{ scanf(\ }while(number<101||number>999); printf(\ }

return 0; }

int search(int n) { int i,j; int n1,n2,n3; int count = 0; // 找完全平方数 for(i=101;i<=n;i++) { for(j=10; j

n1 = i/100; // 百位 n2 = i/10;// 十位 n3 = i; // 个位 if(n1==n2 && n2==n3 && n3==n1){} else if(n1!=n2 && n2!=n3 && n3!=n1) {} else { count++; } break; } } } return count; }

/*程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat (0

输入一个整数n(n>0且n<=10),求1!+2!+3!+...+n!。定义并调用函数fact(n)计算n!,函数类型是double。

例:括号内是说明 输入

3 (repeat=3) 1 10 5 输出 1

4037913 153 */

#include double fact(int n); int main(void) { int i,n; double sum; int ri,repeat; scanf(\ for(ri=1;ri<=repeat;ri++) { /*---------*/ sum=0; scanf(\ for(i=1;i<=n;i++)

本文来源:https://www.bwwdw.com/article/hbu7.html

Top