c语言编程题,拜托各位大佬指点一下!

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-08-01
C语言编程题,拜托大家

(已补充排序功能!基本冒泡排序!)
通过Ascii码来识别按键。
输入采用getch函数获取字符再转数字。
由于getch不在控制台显示,自定义函数实现回显。
代码实现了录入,删除功能。
录入只识别数字,其他字符按了也没用。
退格键一次删一个字符,可以跨行删除。
回车确认一个数字的输入,下次输入新数字自动换行(回车后光标不换行,另外删除当前行可以反退到上一行)。
Ctrl+D结束程序。
注意:getch函数在windows系统下正常。linux系统下不一定能运行。
另外,我没有写数值大小验证,数组变量是int型,如果你输入超出数值类型上限还是会报错的,想要输入更大的数字,可以换longlong性。想加验证,自己在代码里加好了,可以加在输入接收的位置。

#include
#include
#include
#define MAXS 100//数组大小
void showList(int *nums,int n,int flag);//打印数组
int inputNums(int *nums,int maxSize);//输入maxSize个以内的数字保存在maxSize中,返回输入的数字个数
void px(int *nums,int n);//升序排列
int main()
{
int nums[MAXS],n=MAXS,cnt;
cnt=inputNums(nums,n);
px(nums,cnt);
printf("
升序排序后的数字为:
");
showList(nums,cnt,1);
return 0;
}
int inputNums(int *nums,int maxSize)//输入maxSize个以内的数字保存在maxSize中,返回输入的数字个数
{
int i=1,cnt=0,n=MAXS,flag=0;//flag:待保存标识;1:标识有数据待保存2:无数据待保存
char c=0;
while(i<=n)
{
c=getch();
if(c!=13 && c!=4 && c>='0' && c<='9')//输入只接收并回显数字字符
{
if(!flag)
nums[cnt]=0,cnt++,flag=1;
nums[cnt-1]=nums[cnt-1]*10+c-'0';
}
if(c==8 && cnt>0)//退格删除
{
if(nums[cnt-1]/10>0)//当前输入数字大于1位,则删除一位输入
nums[cnt-1]=nums[cnt-1]/10;
else if(nums[i-1]/10==0)//当前输入数字只剩下1位,则删除当前输入的数值,数组个数-1
{
nums[cnt-1]=0,cnt--;
if(cnt==0)
flag=0;
else
i--,flag=1;
}
}
if(c==13)//回车
i++,flag=0;
if((c>='0' && c<='9')||c==13||c==8)
system("cls"),showList(nums,cnt,0);
if(c==4)//ctrl+D
{
if(flag)
flag=0;
break;
}
}
printf("
输入的数字为:
");
showList(nums,cnt,1);
return cnt;
}
void px(int *nums,int n)//升序排列
{
int i,j,num;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(nums[i]>nums[j])
{
num=nums[i];
nums[i]=nums[j];
nums[j]=num;
}
}
}
void showList(int *nums,int n,int flag)//打印数组,flag:1打印模式;flag:0显示模式
{
int i;
if(flag && n>0)
{
printf("
");
for(i=0;i<n;i++)
printf("%d ",nums[i]);
printf("
");
}
else if(!flag && n>0)
{
for(i=0;i<n-1;i++)
printf("%d
",nums[i]);
printf("%d",nums[i]);
}
}

利用c库函数提供的方法 很简单

#include<stdio.h>
void main(){
int n,a,i,j,sum=0,temp=0;
printf("请输入整数a和整数n:");
scanf("%d %d",&a,&n);
while(a<1||a>9||n<1||n>80){
printf("请输入正确的数据!\n\n");
printf("请输入整数a和整数n:");
scanf("%d %d",&a,&n);
}
for(i=n-1;i>1;i--){
for(j=1;j<i-1;j++){
temp=(temp+a)*10;
if(i==n/2&&j==1){
temp*=-1;
}
sum+=(-temp/10);
}
}
printf("%d\n",sum);
}

  • C语言编程题,求助大佬解答
    答:按照题目要求编写的求最大值和最小值及它们的位置的C语言程序如下 include<stdio.h> int max(int a[],int n,int *p){ int i=0,m=a[0];p=i;for(i=1;i<n;i++){ if(m<a[i]){ m=a[i];p=i;} } return m;} int min(int a[],int n,int *p){ int i=0,m=a[0];p...
  • C语言程序分析题 大佬救救我?
    答:分析:第一段程序使用for循环,每一次循环时,都对变量进行了初始赋值,即i=1,j=1,k=1。就是说,嵌套的内循环变量,如j,k都是从1开始的。而第二段程序使用while循环,循环开始时,没有对对变量进行了初始赋值,即j,k只有第一次循环时,初始值是1,当第二次循环时,最内层的k=5,内循环已经...
  • 一道c语言编程题,请大佬帮忙看看
    答:第五次:sum+=i++结果是sum=7+4=11,然后i=i+1=4+1=5。i=5了循环条件破坏了,退出循环了,由printf("%d/n",sum);打印出sum为11。这个答案是对的。
  • C语言编程题,求助大佬解答
    答:include <iostream> using namespace std;struct Node { int elem;Node* next;};struct List { Node* head = NULL;};//查找前驱节点 Node* find_pre(List list, int elem){ if (!list.head) return NULL;Node* node = list.head;while (node->next && node->next->elem < elem) node...
  • C语言编程问题,请教大佬!
    答:而且申明的是fac函数,但使用的时候却写成了f,所以造成结果的不正确。可能原因:1.是否已经有黑框在运行了?2.是否main出了问题?解决方法:1、若后台已经有黑框再运行,则结束黑框;2、若无黑眶,可能是main函数出了问题,可查看是否把函数的定义写到了main函数中。
  • C语言编程题,求助大佬,谢谢!
    答:感觉写得不好= = include <stdio.h>int main(){ char str[200]; char ch; char *p = str; while ((ch = getchar()) != '\n') { *p++ = ch; *p++ = ' '; } p[-1] = '\0'; puts(str);} ...
  • 一道c语言编程题,求大佬解答,求代码
    答:include <stdio.h>#define N 15int fun(int a[]){int i,j,k,m=N;for(i=0;i<m-1;i++)for(j=i+1;j<m;j++)if(a[j]==a[i]){for(k=j;k<m-1;k++)a[k]=a[k+1];m--;i--;}return m;}void main(){int i,k,a[N];for(i=0;i<N;i++){scanf("%d",&a[i...
  • c语言的编程题目,求大佬帮忙看看
    答:Include<stdio.h> int main(){ char str[255]={'\0'};int i, j, k,n;int m = 0;scanf("%d", &n);for(i =2;i<=n; i++){ k = 0;m = 0;for(j=1;j<=i-1;j++)if(i%j==0){ k += j;sprintf(str, m==0 ? "%s%d\0" : "%s+%d\0", str,...
  • C语言编程题,求助大佬,谢谢!
    答:int main(int argc,char *argv[]){ double w,tax;printf("Please enter the amount of wages before taxes...\nw=");if(scanf("%lf",&w)!=1 || w<0){ printf("Input error, exit...\n");return 0;} if((w-=3500)<=1500.0)tax=w*0.03;else if(w>1500.0 && w<=4500...
  • C语言程序题,求完整代码,请求大佬帮忙?
    答:如图中代码。