刚学c语言这里卡住了不知道怎么解决

img


刚学c语言不知道为啥会出现这种情况,希望求解答一下哪里错了,并且我希望就是输入数据地方能否可以出现在句子后面,就是请输入半径(在这里输入),请输入高(在这里输入)

scanf格式控制错误,你这么写的话输入要变成下面这样,也就是scanf的“非输入控制符”都要原样输入。这里的非控制符就是指%d %f这种格式控制符外,其他字母其他符号等都是非控制输入符

r=1.5,h=3

而如果你只想输入数字,并不想输入r=xxx这种格式,你应该直接用

scanf("%f",&r);

而如果你想按照你说的话,就得将print和scanf拆开,一个一个输入,至于printf加不加换行符看你心情了。

printf("请输入半径:");
scanf("%f",&r);
printf("请输入高:");
scanf("%f",&h);

控制台不能输入 1,5,3 而应输入r=1,h=5

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/1065391
  • 你也可以参考下这篇文章:数据库层面解决高并发时获取最大主键重复问题
  • 除此之外, 这篇博客: C语言中的这些经典题目你都会了吗?【一文带你回顾经典】【全程高能】中的 💫字符串反向排列(不是逆序)(递归实现) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 内容实现:

    编写一个函数 reverse_string(char * string)(递归实现)

    实现:将参数字符串中的字符反向排列,不是逆序打印。

    要求:不能使用C函数库中的字符串操作函数。

    比如:

    char arr[] = "abcdef";

    逆序之后数组的内容变成:fedcba

    这个题目的要求是将字符串反向打印,而不是逆序,而且不能使用c函数中的字符串操作函数

    既然要反向,那么需要交换两个字符的位置,然后打印即可,递归实现:求一个字符串“abcdef”,在字符串里的是abcdef\0,大事化小,先把a放到临时变量里,然后把f放到a里,然后把\0放入f中,让bcde\0变成新的字符串,而调用自己的时候需要设定条件,如果中间剩下一个的时候就不需要交换了,所以大于等于2的时候调用

    int my_strlen(char* string)
    {
    	int ret = 0;
    	while (*string != '\0')
    	{
    		ret++;
    		string++;
    	}
    	return ret;
    }
    void reverse(char* string)
    {
    	int len = my_strlen(string);
    	char tmp = *string;
    	*string = *(string+len-1);
    	*(string + len - 1) = '\0';
    	if (my_strlen(string + 1) >= 2)
    		reverse(string + 1);
    	*(string + len - 1) = tmp;
    }
    int main()
    {
    	char arr[] = "abcdef";
    	reverse(arr);
    	printf("%s", arr);
    	return 0;
    }

    内容实现

    写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和

    例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19

    输入:1729,输出:19

    求一个非负整数每个位数之和,如1729可以分成 172 + 9,  17 + 2 + 9 , 1 +7+2+9,递归实现,如果是一位数的时候,返回这个数,如果大于一位数,返回 除以10加上摸10的值,1729/10  172  递归递下去,归回来的每位数加上取余的数

    int fac(unsigned int n)
    {
    	if (n > 9)
    	{
    		return fac(n / 10) + n % 10;
    	}
    	return n;
    }
    int main()
    {
    	unsigned int n = 0;
    	scanf("%d", &n);
    	int sum = fac(n);
    	printf("%d", sum);
    	return 0;
    }

    内容实现

    编写一个函数实现n的k次方,使用递归实现。

  • 您还可以看一下 2017CCTC大会老师的【微服务专场】实施微服务架构的关键技术课程中的 实施微服务架构的关键技术小节, 巩固相关知识点