2020年MOOCC语言程序设计精髓第十周编程题练兵

编程入门 行业动态 更新时间:2024-10-25 02:24:44

2020年MOOCC语言程序设计<a href=https://www.elefans.com/category/jswz/34/1740656.html style=精髓第十周编程题练兵"/>

2020年MOOCC语言程序设计精髓第十周编程题练兵

1有趣的“回文”检测
题目内容:
英文中有很多的回文词,回文词的拼法十分有趣,无论是从前往后拼读,还是从后往前拼读,他们的拼法和词义都不变。例如:dad(爸爸),mum(妈妈),noon(中午),eve(前夕),eye(眼睛),pop(流行),deed(行为),level(水平)等。简单地说,“回文”就是指顺读和倒读都一样的字符串。现在请你编程输入一个单词,判断它是否是回文。
提示:
(1)设置两个指针pStart和pEnd,让pStart指向字符串首部,让pEnd指向字符串尾部。
(2)利用循环从字符串两边对指针所指字符进行比较,当对应的两字符相等且两指针未超越对方时,使指针pStart向前移动一个字符位置(加1),使指针pEnd向后移动一个字符位置(减1),一旦发现两字符不等或两指针已互相超越(不可能是回文),则立即停止循环。
(3)根据退出循环时两指针的位置,判断字符串是否为回文。

#include <stdio.h>
#include <string.h>int Loop(char c[],int n){int pStart=0,pEnd=n-1;while(pStart<=pEnd){if(c[pStart]==c[pEnd]){pStart++;pEnd--;}elsereturn 0;}return 1;
}int main()
{char str[100];printf("Input string:");gets(str);if(Loop(str,strlen(str)))printf("Yes!\n");elseprintf("No!\n");return 0;
}

3程序改错——1
题目内容:
下面程序的功能是,从键盘输入两个字符串,分别存放在字符数组d和s中,通过调用子函数MyStrcat( )将这两个字符串连接起来,并将连接后的字符串存放在字符数组r中,同时输出连接后的字符串。已知每个字符数组的最大长度为80。下面给出的程序存在错误,找到错误的原因后,请修改正确。并按照给出的程序运行结果示例检查你的程序。
已知函数原型:char* MyStrcat(char *dest, char *source);//函数返回连接后的字符串的首地址

#include <stdio.h>
#include <string.h>
int main(void)
{char *first, *second, *result;printf("Input the first string:\n");gets(first);printf("Input the second string:\n");gets(second);result = MyStrcat(first, second);printf("The result is : %s\n", result);return 0;
}
char* MyStrcat(char *dest, char *source)
{int i = 0;while (*(dest+i)!='\0')   i++;for (; *(source+i)!='\0'; i++){*(dest+i) = *(source+i);   }return dest;
}

改错后:

#include <stdio.h>
#include <string.h>
#define MAX 10//未声明函数
char* MyStrcat(char *dest, char *source);
int main(void)
{//这里要注意的是如果采用给字符串指针赋初值的方法后面是不能对字符串进行修改的char *first, *second, *result;//给指针分配空间first=(char*)malloc(MAX*sizeof(char));printf("Input the first string:\n");gets(first);//给指针分配空间second=(char*)malloc(MAX*sizeof(char));printf("Input the second string:\n");gets(second);//给指针分配空间result=(char*)malloc(MAX*sizeof(char));result = MyStrcat(first, second);printf("The result is : %s\n", result);return 0;
}
char* MyStrcat(char *dest, char *source)
{int i = 0;while (*(dest+i)!='\0')   i++;//从source字符串第一位开始处理int temp=i;for (; *(source+i-temp)!='\0'; i++){*(dest+i) = *(source+i-temp);}//字符串结尾加上结束符*(dest+i)='\0';return dest;
}

4程序改错——2
题目内容:
下面程序的功能是输出如示例所示形式的数据,目前程序中存在错误,找到错误的原因后,请修改正确,并按照给出的程序运行结果示例检查你的程序。
程序中用到的函数原型如下:
void YH(int a[][ARR_SIZE], int n);
void PrintYH(int a[][ARR_SIZE], int n);
程序运行结果示例:
1
1 1
1 2 1
1 3 3 1

#include<stdio.h>
#define  ARR_SIZE  5
void  YH(int a[][ARR_SIZE], int  n);
void  PrintYH(int a[][ARR_SIZE], int  n);
int main(void)
{int  a[ARR_SIZE][ARR_SIZE];YH(a, ARR_SIZE);PrintYH(a, ARR_SIZE);return 0;
}
void YH(int a[][ARR_SIZE], int n)
{int  i, j ;for (i=1; i<=n; i++){  a[i][1] = 1;a[i][i] = 1;}for (i=3; i<=n; i++){for (j=2; j<=i-1; j++){a[i][j] = a[i-1][j-1] + a[i-1][j];}       }
}
void PrintYH(int a[][ARR_SIZE], int n)
{int i , j ;for (i=1; i<n; i++){for (j=1; j<=i; j++){printf("%4d", a[i][j]);}printf("\n");}
}

改错后:

#include<stdio.h>
#define  ARR_SIZE  5
void  YH(int a[][ARR_SIZE], int  n);
void  PrintYH(int a[][ARR_SIZE], int  n);
int main(void)
{int  a[ARR_SIZE][ARR_SIZE];YH(a, ARR_SIZE);PrintYH(a, ARR_SIZE);return 0;
}
void YH(int a[][ARR_SIZE], int n)
{int  i, j ;//下标越界for (i=1; i<n; i++){a[i][1] = 1;a[i][i] = 1;}//下标越界for (i=3; i<n; i++){for (j=2; j<=i-1; j++){a[i][j] = a[i-1][j-1] + a[i-1][j];}}
}
void PrintYH(int a[][ARR_SIZE], int n)
{int i , j ;for (i=1; i<n; i++){for (j=1; j<=i; j++){printf("%4d", a[i][j]);}printf("\n");}
}

5出售金鱼
题目内容:
买买提将养的一缸金鱼分五次出售:第一次卖出全部的一半加二分之一条;第二次卖出余下的三分之一加三分之一条;第三次卖出余下的四分之一加四分之一条;第四次卖出余下的五分之一加五分之一条;最后卖出剩下的11条。问原来鱼缸中共有几条鱼?
设第 i 次有x条,第i+1次有y条,则 i i + 1 x − 1 i + 1 = y \frac{i}{i+1}x-\frac{1}{i+1}=y \quad i+1i​x−i+11​=y则有 x = i + 1 i y + 1 i x=\frac{i+1}{i}y+\frac{1}{i} x=ii+1​y+i1​故可编程如下

#include <stdio.h>
#include <stdlib.h>int main()
{float fish=11,i;for(i=4;i>0;i--){fish=(i+1)/i*fish+1/i;}printf("There are %d fishes at first.\n",(int)fish);return 0;
}

6找最值
题目内容:
从键盘任意输入10个整数,用指针变量作函数参数编程计算最大值和最小值,并返回它们所在数组中的位置。函数原型如下所示:
int FindMax(int num[], int n, int *pMaxPos);//函数返回最大值,pMaxPos返回最大值所在的下标
int FindMin(int num[], int n, int *pMinPos);//函数返回最小值,pMaxPos返回最小值所在的下标

#include<stdio.h>
#define  MAX  10int FindMax(int num[], int n, int *pMaxPos){int i;*pMaxPos = 0;for(i=0;i<n;i++){if(num[i]>num[*pMaxPos])*pMaxPos = i;}return num[*pMaxPos];
}int FindMin(int num[], int n, int *pMinPos){int i;*pMinPos = 0;for(i=0;i<n;i++){if(num[i]<num[*pMinPos])*pMinPos = i;}return num[*pMinPos];
}int main(){int num[MAX],n=10,pMaxPos,pMinPos,i;printf("Input 10 numbers:\n");for(i=0;i<n;i++){scanf("%d",&num[i]);}int max = FindMax(num,n,&pMaxPos);int min = FindMin(num,n,&pMinPos);printf("Max=%d,Position=%d,Min=%d,Position=%d\n",max,pMaxPos,min,pMinPos);
}

7杨辉三角形
题目内容:
编程打印具有如下形式的杨辉三角形,其中输出数据的行数n从键盘输入,并且n<=10。

#include<stdio.h>
#define  MAX  10int YH(int num[][MAX],int n){int i,j;for(i=0;i<n;i++){num[i][0] = 1;num[i][i] = 1;}for(i=2;i<n;i++){for(j=1;j<i;j++){num[i][j] = num[i-1][j-1] + num[i-1][j];}}for(i=0;i<n;i++){for(j=0;j<=i;j++){printf("%4d",num[i][j]);}printf("\n");}return 0;
}int main(){int n,num[MAX][MAX]={0};printf("Input n (n<=10):\n");scanf("%d",&n);YH(num,n);return 0;
}

8颠倒句子中的单词顺序
题目内容:
从键盘输入一个句子(假设字符数小于100个),句子中的单词之间用空格分隔,句子必须以一个标点符号作为结尾,句子开头和末尾标点符号前均没有空格,以回车表示输入结束,请编程颠倒句中的单词顺序并输出。

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define  MAX  100int Reverse(char str[],int len){int number=0,letter=0,i;char words[20][10];char symbol;for(i=0;i<len;i++){if(str[i]==' '){words[number][letter] = '\0';number++;letter=0;}else if(i==len-1){//末尾标点符号words[number][letter] = '\0';number++;symbol = str[i];}elsewords[number][letter++] = str[i];}for(i=number-1;i>0;i--){printf("%s ",words[i]);}printf("%s%c\n",words[i],symbol);return 0;
}int main(){char str[MAX];printf("Input a sentence:");gets(str);int len = strlen(str);Reverse(str,len);return 0;
}

更多推荐

2020年MOOCC语言程序设计精髓第十周编程题练兵

本文发布于:2024-02-12 08:25:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1686954.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:精髓   语言程序设计   MOOCC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!