格式的参数太多了

时间:2016-11-04 15:29:24

标签: c printf

#include <stdio.h>#include <stdlib.h>int main(){
int m,g,flag=0;
printf("Unesite mjesec i godinu (mjesec se unosi kao broj od 1 do 12):\n");
scanf("%d%d",&m,&g);
if (((g%4==0)&&(g%100!=0))||(g%400==0)) flag=1;
if (flag==0)
{
    switch(m)
    {
        case 1:
            printf("Mjesec januar %d",g,". godine ima 31 dan.");break;
        case 2:
            printf("Mjesec februar %d",g,". godine ima 28 dana.");break;
        case 3:
            printf("Mjesec mart %d",g,". godine ima 31 dan.");break;
        case 4:
            printf("Mjesec april %d",g,". godine ima 30 dana.");break;
        case 5:
            printf("Mjesec maj %d",g,". godine ima 31 dan.");break;
        case 6:
            printf("Mjesec jun %d",g,". godine ima 30 dana.");break;
        case 7:
            printf("Mjesec jul %d",g,". godine ima 31 dan.");break;
        case 8:
            printf("Mjesec avgust %d",g,". godine ima 31 dan.");break;
        case 9:
            printf("Mjesec septembar %d",g,". godine ima 30 dana.");break;
        case 10:
            printf("Mjesec oktobar %d",g,". godine ima 31 dan.");break;
        case 11:
            printf("Mjesec novembar %d",g,". godine ima 30 dana.");break;
        case 12:
            printf("Mjesec decembar %d",g,". godine ima 31 dan.");break;
    }
}
else
{
    switch(m)
    {
        case 1:
            printf("Mjesec januar %d",g,". godine ima 31 dan.");break;
        case 2:
            printf("Mjesec februar %d",g,". godine ima 29 dana.");break;
        case 3:
            printf("Mjesec mart %d",g,". godine ima 31 dan.");break;
        case 4:
            printf("Mjesec april %d",g,". godine ima 30 dana.");break;
        case 5:
            printf("Mjesec maj %d",g,". godine ima 31 dan.");break;
        case 6:
            printf("Mjesec jun %d",g,". godine ima 30 dana.");break;
        case 7:
            printf("Mjesec jul %d",g,". godine ima 31 dan.");break;
        case 8:
            printf("Mjesec avgust %d",g,". godine ima 31 dan.");break;
        case 9:
            printf("Mjesec septembar %d",g,". godine ima 30 dana.");break;
        case 10:
            printf("Mjesec oktobar %d",g,". godine ima 31 dan.");break;
        case 11:
            printf("Mjesec novembar %d",g,". godine ima 30 dana.");break;
        case 12:
            printf("Mjesec decembar %d",g,". godine ima 31 dan.");break;
    }
}
return 0;
}
你能帮帮我吗?我不明白我的代码在哪里出错。编写消息的编译器:

  

“警告:格式的参数太多了。”

我认为printf不正确,但我不知道为什么......

3 个答案:

答案 0 :(得分:1)

printf("Mjesec januar %d",g,". godine ima 31 dan.");break;

格式字符串中有一个%,所以应该(必须?)只传递一个附加参数。您正在传递另外两个参数。

不确定您要实现的目标,但其中任何一项都应该有效:

printf("Mjesec januar %d. godine ima 31 dan.",g);break;

printf("Mjesec januar %d%s",g,". godine ima 31 dan.");break;

答案 1 :(得分:1)

printf("Mjesec januar %d",g,". godine ima 31 dan.")

你有一个格式化字符串&#34;%d&#34;,但有两个参数&#34; g&#34;和&#34;。 godine ima 31 dan。&#34;

这看起来很像php字符串连接。您可能想要的是

printf("Mjesec januar %d godine ima 31 dan.", g);

答案 2 :(得分:0)

printf应至少收到一个参数,即您要打印的字符串。如果你想在其中传递变量,你应该把它作为参数。

参考:http://www.cplusplus.com/reference/cstdio/printf/

因此,对于您的代码,您应该这样做:

printf("Mjesec januar %d godine ima 31 dan.", g );break;

第一个参数是您要打印的字符串,%d引用g变量。