《面向过程程序设计》软件1801-1803 期末测试
作者:互联网
6-1 链表逆置 (10 分)
本题要求实现一个函数,将给定单向链表逆置,即表头置为表尾,表尾置为表头。链表结点定义如下:
struct ListNode {
int data;
struct ListNode *next;
};
函数接口定义:
struct ListNode *reverse( struct ListNode *head );
其中head
是用户传入的链表的头指针;函数reverse
将链表head
逆置,并返回结果链表的头指针。
裁判测试程序样例:
#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int data;
struct ListNode *next;
};
struct ListNode *createlist(); /*裁判实现,细节不表*/
struct ListNode *reverse( struct ListNode *head );
void printlist( struct ListNode *head )
{
struct ListNode *p = head;
while (p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main()
{
struct ListNode *head;
head = createlist();
head = reverse(head);
printlist(head);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
1 2 3 4 5 6 -1
输出样例:
6 5 4 3 2 1
struct ListNode *reverse( struct ListNode *head ){
struct ListNode *p,*q=head,*tail=NULL;
while(q!=NULL){
p=(struct ListNode*)malloc(sizeof(struct ListNode));
p->data=q->data;
if(tail==NULL) p->next=NULL;
else p->next=tail;
tail=p;
q=q->next;
}
return tail;
}
6-2 字符串正反序连接 (10 分)
将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。
函数接口定义:
void fun (char *s, char *t);
其中s
和t
都是用户传入的参数。函数将s
所指字符串的正序和反序进行连接,形成一个新串放在t
所指的数组中。
裁判测试程序样例:
#include <stdio.h>
void fun (char *s, char *t);
int main()
{ char s[100], t[100];
scanf("%s", s);
fun(s, t);
printf("The result is: %s\n", t);
return 0;
}
/* 请在这里填写答案 */
输入样例:
abcd
输出样例:
The result is: abcddcba
void fun (char *s, char *t){
while(*s!=NULL){
*t = *s;
t++;
s++;
}
s--;
while(*s!=NULL){
*t = *s;
t++;
s--;
}
}
6-3 判断数字字符* (10 分)
C语言标准函数库中包括 isdigit 函数,用于判断数字字符。作为练习,我们自己编写一个功能与之相同的函数。
请编写函数,判断数字。
函数原型
// 判断数字
int IsDigit(char x);
说明:参数 x
是任意字符的 ASCII 码。若 x
是数字字符的 ASCII 码,则函数值为 1(真),否则为 0(假)。
裁判程序
#include <stdio.h>
// 判断数字
int IsDigit(char x);
int main()
{
char x;
scanf(" %c", &x);
if (IsDigit(x))
{
puts("Yes");
}
else
{
puts("No");
}
return 0;
}
/* 你提交的代码将被嵌在这里 */
输入样例1
8
输出样例1
Yes
输入样例2
W
输出样例2
No
int IsDigit(char x){
if(x-'0'>=0&&x-'0'<=9){
return 1;
}
else
return 0;
}
7-1 求3×4数组中大于等于平均值的元素的和 (10 分)
求一个3×4数组中大于等于平均值的所有数组元素的和,并统计满足条件的元素个数。本题中的平均值为小数,用到的其他所有变量均为整型。
输入格式:
输入3行4列的矩阵,每行第一个数前没有空格,每行的每个数之间各有一个空格。
输出格式:
在一行中按照“s=和,n=个数”的顺序输出,结果均原样输出,没有列宽控制。
输入样例:
1 4 7 8
2 1 4 2
1 2 3 4
输出样例:
s=27,n=5
#include<stdio.h>
int main(){
int a[3][4];
int sum = 0;
int s = 0;
for(int i = 0; i < 3; i++){
for(int j = 0; j < 4; j++){
scanf("%d",&a[i][j]);
sum += a[i][j];
}
}
//printf("%lf ",sum/12.0);
int n=0 ;
for(int i = 0; i < 3; i++){
for(int j = 0; j < 4; j++){
if(a[i][j] >= sum/12.0){
s += a[i][j];
n++;
}
}
}
printf("s=%d,n=%d",s,n);
}
7-2 比较两个字符串大小 (10 分)
比较两个字符串的大小,不许使用strcmp函数。
输入格式:
在两行分别输入两个长度小于20的字符串。在字符串中不要出现换行符,空格,制表符。
输出格式:
直接输出“>”或“<”或“=”,分别表示第一个字符串大于第二个字符串,第一个字符串小于第二个字符串,第一个字符串等于第二个字符串。
输入样例:
asd
abcd
输出样例:
>
输入样例:
asd
asd
输出样例:
=
输入样例:
cdfg
fgh
#include<stdio.h>
#include<string.h>
int main(){
char a[20];
char b[20];
gets(a);
gets(b);
for(int i = 0; i < (strlen(a)>strlen(b)?strlen(a):strlen(b)); i++){
if(a[i]-'0'>b[i]-'0'){
printf(">");
break;
}
else if(a[i]-'0'<b[i]-'0'){
printf("<");
break;
}
else{
printf("=");
break;
}}
}
7-3 人民币兑换 (10 分)
1元5角钱人民币兑换5分、2分和1分的硬币(每一种都要有)共100枚,会有很多种兑换方案。请编写程序给出各种兑换方案。
输入格式:
输入为一个正整数n,表示要求输出前n种可能的方案。方案的顺序,是按照5分硬币从少到多排列的。
输出格式:
显示前n种方案中5分、2分、1分硬币各多少枚。每行显示一种方案,数字之间空一格,最后一个数字后没有空格。
注意:如果全部方案不到n种,就顺序输出全部可能的方案。
输入样例:
5
输出样例:
1 46 53
2 42 56
3 38 59
4 34 62
5 30 65
#include<stdio.h>
#include<string.h>
int main(){
int n;
int cont = 0;
scanf("%d",&n);
int sum = 150;
for(int i = 1; i < 30; i++){
for(int j = 46; j > 0; j--){
if(i * 5 + j * 2 + (100 - i -j) == 150){
if(cont < n){
cont++;
printf("%d %d %d\n",i,j,(100 - i -j));
}
}
}
}
return 0;
}
7-4 辗转相除法求最大公约数 (10 分)
用辗转相除法求两个正整数的最大公约数。
输入格式:
输入在一行中给出2个正整数,其间以逗号分隔。
输出格式:
在一行中按照格式“gcd =最大公约数”顺序输出两个整数的最大公约数。
输入样例:
15,20
输出样例:
gcd=5
#include<stdio.h>
#include<string.h>
void gcd(int max,int min){
int r;
do{
r = max%min; //20 % 15 = 5;
max = min; // max= 15
min = r; // min = 5
}while(min!=0);
printf("gcd=%d",max);
}
int main(){
int m,n;
scanf("%d,%d",&m,&n);
int max = m>n?m:n;
int min = m<n?m:n;
gcd(max,min);
return 0;
}
标签:char,head,1803,struct,1801,int,样例,ListNode,程序设计 来源: https://blog.csdn.net/qq_42612338/article/details/94635533