dev c 程序求解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dev c 程序求解相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#include<stdlib.h>
char main()

char *array=NULL;
int num, i;
printf("Input the number of element: "); scanf("%d",&num);
array=(char*)malloc(sizeof(char)*num); /*申请动态数组使用的内存块*/

if (array==NULL) /*内存申请失败:提示,退出*/

printf("out of memory, press any key to quit……");
exit(0); /*exit():终止程序运行,返回操作系统*/


printf("Input %d elements: ", num); /*提示输入num个数据*/
for(i=0; i<num; i++) scanf("%c", &array[i]);
for(i=0;i<num;i++)

if(array[i]=='%') array[i]='L';
if(array[i]=='!') array[i]=' ';
if(array[i]=='$') array[i]='i';
if(array[i]=='*') array[i]='u';
if(array[i]=='@') array[i]='e';
if(array[i]=='?') array[i]='s';
if(array[i]=='&') array[i]='a';
if(array[i]=='+') array[i]='p';
if(array[i]=='#') array[i]='g';

printf("解密:\n");
for(i=0;i<num;i++)
printf("%c",array[i]);
free(array);
getch();

运行后,明明输入了5个字符,却只显示4个,哪里错了呢


for(i=0; i<num; i++) scanf("%c", &array[i]);
前面加上一句
fflush(stdin);

因为你第一次输入5时也输入了回车,回车前面没有用到就被放在缓存区中,等你第二次输入时回车作为第一个数被输入了,所以你要正确输入,之前要先清空缓存区中的东西,也就是用fflush(stdin);
参考技术A scanf("%d",&num);

读入一个数据之后 这个数据之后还有一个 回车 符号

for(i=0; i<num; i++) scanf("%c", &array[i]);

这个读5个字符的时候,会先读了 那个 回车符号 才会再读接下来的数据

C语言程序求解

给一个不多于5位的正整数,按要求给出结果。
要求:
1)求出它是几位数;2)按正序分别打印出每一位数字;3)按逆序打印出每一位数字;4)询问用户是否继续输入。
答题要求:
1)编写一个函数求出它是几位数int fun1(int num),要求在主函数中根据函数返回值输出信息。
2)编写一个函数按正序分别打印出每一位数字;要求不能直接将整数输出,应分别取出每位数字输出;
3)编写一个函数按逆序打印出每一位数字;
4)以上两个函数推荐原型为void fun2(int num,int n),第一个参数为正整数,第二个参数为正整数的位数,直接在函数里面输出结果;
5)编写main函数,输入正整数num,先后调用3个函数。
6)在main函数中询问用户是否继续输入。

#include<stdio.h>
#include<windows.h>
void OutReverse(int num,int n) //反序输出

int i,j;
for(i=1,j=1;i<=10000 && j<=n;i*=10,j++)
printf("%d ",num/i%10);
printf("\\n");

void OutJust(int num,int n) //正序输出

int i=1,j;
for(j=0;j<n-1;j++)
i=i*10;
for(;i>=1;i/=10)
printf("%d ",num/i%10);
printf("\\n");

int fun1(int num) //返回整数的位数

if((num/10000)>=10) return(-1);else
if((num/10000%10)>=1) return(5);else
if((num/1000%10)>=1) return(4);else
if((num/100%10)>=1) return(3);else
if((num/10%10)>=1) return(2);else
if((num/1%10)>=1) return(1);else
return(0);


main()

int i,ws;
int p;
while(1)

p=0;
printf("输入数字:");
scanf("%d",&i);
ws=fun1(i);
printf("%d\\n",ws); //调用求位数
OutReverse(i,ws); //调用反序
OutJust(i,ws); //调用正序
printf("继续输入: Y(y) 结束输入任意键:\\n");
scanf("%d",&p);
if(p==1) system("cls");
else exit(0);

参考技术A #include <stdio.h>
#include <string.h>

int fun1(int num)

char tmp[10];
sprintf(tmp,"%d",num);
return strlen(tmp);


void fun2(int num,int n)

char tmp[10];
long i;
sprintf(tmp,"%d",num);
for(i=0;i<n;++i)
printf("%c",tmp[i]);
printf("\n");
for(i=n-1;i>=0;--i)
printf("%c",tmp[i]);
printf("\n");


int main()

char c;
long num,ws;
be:
scanf("%d",&num);
ws=fun1(num);
printf("%d\n",ws);
fun2(num,ws);
printf("Continue?Y\\N");
while(1)

c=getchar();
if(c=='N' || c=='n')
return 0;
else if(c=='y' || c=='Y')
goto be;

参考技术B 我是新手,不懂

以上是关于dev c 程序求解的主要内容,如果未能解决你的问题,请参考以下文章

[100分求解]:Dev-C++编译.c文件时提示"源文件未编译"无法运行 而把后缀改成.cpp后正常运行

C语言程序求解

基于SAT的数独游戏求解程序,求C语言代码

线性方程组求解——C语言程序设计代码,高手们,拜托啦!急急急啊!!!

C语言程序无法运行,求解

C程序设计:编制求解定积分的通用函数